[ad_1]
我使用鼠标悬停和鼠标离开事件在 VB.Net 中编写了 Form1 的代码控制框处理,但它不起作用。 谁能告诉我错误是什么?
我尝试过的:
Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave Me.ControlBox = False End Sub Private Sub Form1_MouseHover(sender As Object, e As EventArgs) Handles MyBase.MouseHover Me.ControlBox = True End Sub
解决方案1
对我来说这段代码运行良好。
我想您的表单上还有几个控件。 如果鼠标悬停在其中之一上,它将离开表单。
如果您希望它们也使您的 Controlbox 可见,您必须将此控件中的每个悬停事件也添加到 Form1_MouseHover-Method 中。
也许您还应该查看 Form1_MouseLeave 是否确实检测到 Leave-Event。
我建议您创建一种“知道”鼠标位于表单或其控件之一上方的方法……
这是一个简单的代码示例,它与属于 Form 的 Timer 一起使用:
VB
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick Dim p As Point = PointToClient(MousePosition) If (p.X >= 0) And (p.X < Width) And (p.Y >= 0) And (p.Y < Height) Then CheckBox1.Checked = True Else CheckBox1.Checked = False End Sub
我给了计时器一个小的间隔(100 毫秒) – 您唯一应该知道的是表单标题和边框不属于表单的大小定义。 它们的大小取决于所选的 FormBorderStyle。 有了这个你还必须计算…
[ad_2]
コメント