C# Form2.ShowDialog() 和鼠标光标
C# Form2.ShowDialog() and Mouse Cursor
(NET Compact Framework 3.5,Windows CE 6.0)
我想隐藏鼠标光标。
所以,我使用 Curosr.Hide()
我有两个表格,Form1,Form2。
Form2 的尺寸小于 Form1。
PictureBox1 在 Form1 中。
单击 PictureBox1 时,将打开 Form2。 (模态)
此时鼠标光标突然出现在Form2的区域外
MouseDonw PictureBox1 -> Form2.ShowDialog -> 显示 MouseCursor
我没做过Cursor.Show()
为什么会出现鼠标光标?
添加了以下内容
我将 Form2.ShowDialog() 从 'MouseDown Event' 移动到 'MouseUp Event'。然后就解决了。为什么?
首先,表单显示和其他 'actions' 通常是通过鼠标单击事件完成的。在鼠标按下和鼠标抬起后触发。
如果您打破正常顺序,即在鼠标按下事件时显示表单,则 GUI 处于 'Mouse down/move' 模式,例如拖动元素或画线。
由于每个元素都可以 show/hide 鼠标光标,因此 Windowing 系统识别出您在第二个窗体上隐藏了 Cursor Hide,但是第一个窗体仍然显示鼠标光标,因为 Mouse Up 事件是未完成。
如果您想了解有关基础知识的更多信息,您应该查看本机 WndProc 以及 Window 消息是如何处理的。 Charles Petzold 的编程 Windows 仍然是 Windows 编程的圣经。
(NET Compact Framework 3.5,Windows CE 6.0)
我想隐藏鼠标光标。
所以,我使用 Curosr.Hide()
我有两个表格,Form1,Form2。
Form2 的尺寸小于 Form1。
PictureBox1 在 Form1 中。
单击 PictureBox1 时,将打开 Form2。 (模态)
此时鼠标光标突然出现在Form2的区域外
MouseDonw PictureBox1 -> Form2.ShowDialog -> 显示 MouseCursor
我没做过Cursor.Show()
为什么会出现鼠标光标?
添加了以下内容
我将 Form2.ShowDialog() 从 'MouseDown Event' 移动到 'MouseUp Event'。然后就解决了。为什么?
首先,表单显示和其他 'actions' 通常是通过鼠标单击事件完成的。在鼠标按下和鼠标抬起后触发。
如果您打破正常顺序,即在鼠标按下事件时显示表单,则 GUI 处于 'Mouse down/move' 模式,例如拖动元素或画线。
由于每个元素都可以 show/hide 鼠标光标,因此 Windowing 系统识别出您在第二个窗体上隐藏了 Cursor Hide,但是第一个窗体仍然显示鼠标光标,因为 Mouse Up 事件是未完成。
如果您想了解有关基础知识的更多信息,您应该查看本机 WndProc 以及 Window 消息是如何处理的。 Charles Petzold 的编程 Windows 仍然是 Windows 编程的圣经。