На форме имеется PictureBox - pcb. В котором нарисовано два прямоугольника: черный и красный.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myBitmap As New Drawing.Bitmap(400, 150)
Dim myGraphics As Drawing.Graphics = Graphics.FromImage(myBitmap)
myGraphics.FillRectangle(Brushes.Black, 0, 0, 200, 150)
myGraphics.FillRectangle(Brushes.Red, 200, 0, 200, 150)
pcb.BackgroundImage = myBitmap
End Sub
Также имеется ToolTip - ttp.
Задача такая чтобы при наведении курсора на любой из квадратов появлялся ToolTip с указанием цвета квадрата.
Если ипользовать MouseMove, то ToolTip "мельтишит":
Private Sub pcb_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pcbStav.MouseMove
If e.X < 200 Then
ttp.SetToolTip(pcb, "Черный")
Else
ttp.SetToolTip(pcb, "Красный")
End If
End Sub
Если использовать MouseHover, то ToolTip изменяется только если курсор вывести за пределы PictureBox и навести обратно:
Private Sub pcb_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles pcbStav.MouseHover
If MouseX < 200 Then
ttp.Show("Черный", pcb, MouseX, MouseY, 1000)
Else
ttp.Show("Красный", pcb, MouseX, MouseY, 1000)
End If
End Sub
Еще одним недостатком последнего листинга является, то что координаты нахождения курсора, приходится "ловить" все в том же MouseMove.
Private Sub pcb_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles pcbStav.MouseMove
MouseX=e.X
MouseY=e.Y
End Sub
Подскажите как сделать чтобы ToolTip не "мигал", и надпись в нем менялась без вывода курсора за пределы PictureBox.
Ответить
|