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 编程的圣经。