Как избежать события выхода мыши из сетки при нажатии на вертикальную полосу прокрутки?
У меня есть форма с плавающей сеткой, которая должна появляться при заполнении текстового поля или нажатии на кнопку. Если элемент выбран или мышь покидает сетку, сетка становится невидимой, поэтому пользователь может видеть оставшуюся часть формы. Данные сетки в большинстве случаев превышают максимальный вертикальный размер, поэтому необходима вертикальная полоса прокрутки. Моя проблема в том, что при наведении на вертикальную полосу прокрутки срабатывает MouseLeave
событие, поэтому сетка становится невидимой.
На этот раз я думаю, что это не вопрос кода, поэтому нужно ли изменить какое-либо свойство, чтобы программа идентифицировала vscrollbar как часть GridView? Или есть какое-то решение кода, чтобы игнорировать MouseLeave
событие при наведении мыши на полосу прокрутки?
Вот мой код события, довольно простой:
Private Sub GridCliente_MouseLeave(sender As Object, e As System.EventArgs) Handles GridCliente.MouseLeave
GridCliente.Visible = False
End Sub
Кроме того, я использую Component One C1TrueDBGrid вместо стандартного gridview. Это может быть важно.
1 ответ
Я нашел решение своей проблемы, добавив GridView на панель и изменив MouseLeave
событие на панель. Чтобы это работало, панель должна превышать размер GridView как минимум на один пиксель с каждой стороны, так как MouseLeave
не сработает, если GridView имеет такой же размер панели (вы должны навести курсор мыши на панель, а не на любой другой компонент внутри нее, чтобы vb.net рассматривал мышь внутри панели). Может быть, это не лучшее решение, но оно работает для меня.