【问题标题】:C# Mouse cursor disappearsC#鼠标光标消失
【发布时间】:2013-04-30 14:39:44
【问题描述】:
  • [鼠标光标悬停在窗口上]:当我在 .NET C# 4.0 窗口上输入文本框时,鼠标光标消失了,这本身就很奇怪。

  • [鼠标光标在窗口外]:当我在文本框中输入并按 ENTER 键在 UI 线程中做一些事情,然后在做这些事情时,我将鼠标光标移到窗口上,鼠标消失了。

如何使鼠标始终可见?

【问题讨论】:

  • 如果您向我们展示导致此问题的代码,对我们会更有帮助
  • 没有可以显示的代码:如果我在 System.Windows.Forms.TextBox 上键入,鼠标会隐藏;如果 UI 线程被阻塞(做一些事情,例如:按钮单击事件处理程序)鼠标隐藏。

标签: c# .net mouse-cursor invisible


【解决方案1】:

在文本框中(在任何应用程序中)输入时,Windows 会自动隐藏您的光标。一些 UI 人可能会说这是为了防止分心,这只是我的猜测。如果您再次移动鼠标,它会重新出现。

在 UI 线程中工作时光标保持不可见的原因仅仅是:您的应用程序正忙于在 UI 线程上工作。因为您的操作正在那里进行,Windows 无法重绘您的应用程序所在的屏幕区域。这就是鼠标再次“消失”的原因。

这两个问题虽然表现相似,却是不同的。

如果你知道你需要做很多工作,但它根本不与用户界面交互,你应该在一个单独的线程中开始这项工作,以便你的应用程序继续感觉对你的用户。

如果您最终需要从另一个线程导致 UI 发生某些事情,则需要检查 Control.Invoke 方法。

【讨论】:

  • 感谢丹尼尔的解释,这很受启发。我在事件处理程序中所做的事情主要是 UI 的东西,所以移动到线程并不是很酷。当光标从窗口外开始时,我希望有一种解决方法/黑客可以将鼠标光标保持在顶部(就像它在窗口内启动时一样 - 通过在 UI 内容之前调用 Application.DoEvents() )。
猜你喜欢
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多