如何根据事件鼠标悬停或鼠标移动显示或隐藏TEXTBOX?我将文本框放在图片上。 我只是尝试通过将文本框可见性的属性设置为 false 来编码,但没有任何反应。我认为代码丢失了吗?
{{1}}
答案 0 :(得分:0)
我假设您希望在悬停图片后立即显示文本框。
textbox
在隐身时不会收听mouse_enter
个事件。
在图片框中使用mouse events
,而不是文本框。
值得一提的是,当你将鼠标悬停在现在可见的文本框上时,你的mouse leave
会为图片框启动,这会让它看不见......
Dim i_Am_in_the_picture_box as Boolean 'global variable to your class
Private Sub picbox1_MouseHover(sender As Object, e As EventArgs) Handles picbox1.MouseHover
TextBox1.Visible = True
End Sub
Private Sub picbox1_MouseLeave(sender As Object, e As EventArgs) Handles picbox1.MouseLeave
TextBox1.Visible = False
End Sub
当触发picturebox
事件时,您可能必须编写一些代码来检查光标何时位于mouse_leave
的范围内(Becaue进入文本框,将触发mouse_leave
图片框的事件)。
如果光标仍在图片框范围内,则不要隐藏textbox
上的picbox.mouse_leave
修改强>
除此之外,根据您的评论,
感谢。但它显示了鼠标悬停的文本框。我有一个 牙齿(下牙和上牙)的图片,这是一个PNG文件。什么时候 牙科医生鼠标悬停在特定的牙齿上,文本框将显示和 牙医可以把牙齿的治疗历史......简而言之,我想要 鼠标悬停在特定区域时,文本框可见 PIC。那可能吗?抱歉,我只是一名学生。我试过谷歌搜索但是 找不到任何关于此的文章/主题。 :)
你必须为每颗牙齿定义自定义边界,然后在mouse_move
上,检查光标位置是否在其中一个边界内。如果是,请显示适用的textbox.
以下是实际工作代码,向您展示如何完成此操作。
以下示例中,两个“隐形”面板位于图片框上方(让我们说“tooth1”和“tooth2”。)
我们使用隐形面板的位置和尺寸参数构建两个自定义矩形。
我们抓住图片框的MouseMove
事件,检查我们的光标是否在我们创建的一个矩形中。如果是,我们会显示一个特定的文本框(我们隐藏其他文本框可见)
这可以用更少的代码完成,但该示例应该准确解释该概念的工作原理。
Public Class Form2
Dim tooth1 As New Rectangle
Dim tooth2 As New Rectangle
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'use the dummy invisble panel's location and size to create our wto rectnagles on the screen
tooth1 = New Rectangle(dummyPanel_for_tooth_1.Location, dummyPanel_for_tooth_1.Size)
tooth2 = New Rectangle(dummyPanel_for_tooth_2.Location, dummyPanel_for_tooth_2.Size)
End Sub
Private Sub _set_all_other_textboxes_invisible(visibleTextboxName As String)
If TextBox1.Name <> visibleTextboxName Then TextBox1.Visible = False
If TextBox2.Name <> visibleTextboxName Then TextBox2.Visible = False
End Sub
Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
If tooth1.Contains(e.Location) Then
'we are inside tooth 1 bounds
TextBox1.Visible = True
'hide the other textboxes we are not working with.
_set_all_other_textboxes_invisible(TextBox1.Name)
'we can exit here, no need to do any furher testing
Exit Sub
End If
If tooth2.Contains(e.Location) Then
'we are inside tooth 2 bounds
TextBox2.Visible = True
'hide the other textboxes we are not working with.
_set_all_other_textboxes_invisible(TextBox2.Name)
'we can exit here, no need to do any furher testing
Exit Sub
End If
End Sub
End Class