【问题标题】:C# Form2.ShowDialog() and Mouse CursorC# Form2.ShowDialog() 和鼠标光标
【发布时间】:2017-10-23 04:43:44
【问题描述】:

(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 事件”移动到“MouseUp 事件”。然后就解决了。为什么?

【问题讨论】:

  • 因为form2已经有了默认的鼠标光标。您也应该在表单初始化或加载时隐藏光标。
  • @BhubanShrestha 谢谢。在您的 cmets 之后,我在 Form2 的 Initializer 上添加了 Cursor.Hide(),但没有解决。我尝试了其他方法。我将 Form2.ShowDialog() 从“MouseDown 事件”移动到“MouseUp 事件”。然后就解决了。为什么?

标签: c# compact-framework windows-ce


【解决方案1】:

首先,表单显示和其他“动作”通常是通过鼠标单击事件完成的。这是在鼠标按下和鼠标抬起后触发的。

如果您打破正常顺序,即在鼠标按下事件时显示表单,则 GUI 处于“鼠标按下/移动”模式,例如拖动元素或绘制线条。

由于每个元素都可以显示/隐藏鼠标光标,因此 Windowing System 会在第二个表单上识别出您是 Cursor Hide,但由于 Mouse Up 事件未完成,第一个表单仍会显示鼠标光标。

如果您想了解更多有关基础知识的信息,您应该查看原生 WndProc 以及如何处理窗口消息。 Charles Petzold 编写的 Windows 编程仍然是 Windows 编程的圣经。

【讨论】:

  • 非常感谢。正如您告诉我们的,鼠标事件将在 Windows CE 6.0 上运行。在 Windows CE 5.0 中,我们现在知道不存在这样的问题,因为 Form1 的 MouseUp 事件发生了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 2010-10-29
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
相关资源
最近更新 更多