Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: MouseMove или MouseHover Добавлено: 05.01.14 14:59  

Автор вопроса:  Дмитрий
На форме имеется 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.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4242
 Web-сайт: all-oracle.ru
 Профиль | | #1
Добавлено: 05.01.14 19:36
Кинь на форму 2 разукрашенных контейнера и задай каждому свой Tooltip и не изобретай велосипед

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий



Вопросов: 9
Ответов: 18
 Профиль | | #2 Добавлено: 05.01.14 20:37
Если бы все так просто было... на самом деле прямоугольников больше, и размещены они в разброс (не в ряду) и лепить на форму кучу контейнеров не по приколу

Ответить

Номер ответа: 3
Автор ответа:
 Mikle



Вопросов: 5
Ответов: 133
 Профиль | | #3 Добавлено: 06.01.14 19:20
А не вариант просто брать цвет под курсором (Point(), или как там оно в vb.net) и по цвету выводить ToolTip?

Ответить

Страница: 1 |

Поиск по форуму





© Copyright 2002-2011 VBNet.RU | Пишите нам