在 Visual Studio 2010 中,我将鼠标事件与位于面板内的 LineShapes 一起使用。我创建了一个简单的示例来演示我无法解释的行为并且正在阻止我的项目。
Public Class Form1
Public Moused_Down_On_Line As Boolean = False
Public Moused_Down_On_Panel As Boolean = False
Public Moused_Move_Count As Integer = 0
Private Sub Panel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
Moused_Move_Count += 1
TextBox1.Text = Moused_Move_Count.ToString() + " (" + Moused_Down_On_Line.ToString + ", " + Moused_Down_On_Panel.ToString + ")"
End Sub
Private Sub Panel1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
Moused_Down_On_Panel = True
End Sub
Private Sub LineShape1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LineShape1.MouseDown
Moused_Down_On_Line = True
End Sub
Private Sub LineShape1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LineShape1.MouseUp, Panel1.MouseUp
Moused_Down_On_Panel = False
Moused_Down_On_Line = False
End Sub
End Class
当我将鼠标移到面板上时,TextBox1 显示我收到了预期的 MouseMove 事件。
当我在面板上单击鼠标按钮并按住它时,TextBox1 仍然显示我正在获得预期的 MouseMove 事件。
但是,当我在 LineShape 上单击鼠标按钮并按住它时,TextBox1 显示我不再获得预期的 MouseMove 事件。此外,如果我在面板上释放鼠标按钮,我也不会得到 MouseUp 事件。
有人可以向我解释我做错了什么吗?单击 LineShape 后,我真的需要继续获取面板的鼠标事件!
编辑:
我添加了这个事件,但 TextBox 显示当我将鼠标移到 LineShape 上时,我只收到 MouseMove 事件:
Private Sub LineShape1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LineShape1.MouseMove
Moused_Move_Count += 1
TextBox1.Text = "LineShape Event" + Moused_Move_Count.ToString() + " (" + Moused_Down_On_Line.ToString + ", " + Moused_Down_On_Panel.ToString + ")"
End Sub