什么可能导致等待游标在它应该恢复之前恢复为默认值



在Winforms应用程序中,我将光标设置为WaitCursor,并在最后块中将其设置回默认:

private void buttonGenRpts_Click(object sender, EventArgs args)
{
    try
    {
        Cursor = Cursors.WaitCursor;
        buttonGenRpts.Enabled = false;
        GenerateReports();
        ... // code elided for brevity (and hopefully not levity)
    }
    finally
    {
        Cursor = Cursors.Default;
        buttonGenRpts.Enabled = true;
    }
}

在大多数情况下,它可以正常工作,但不是全部 - 由于某种原因,光标会停止沙漏。然而,Cursor 没有在代码中的其他任何地方设置(默认或其他任何内容)——仅在上面的代码中。

还有什么可能导致光标开始诅咒它无休止的振动并停止它的咔嚓吗?

要为整个应用程序设置当前光标,您应该使用

Cursor.Current = Cursors.WaitCursor;
...
Cursor.Current = Cursors.Default;

而是代码设置当前窗体的 Cursor 属性。
您可能将鼠标移动到表单边界之外,它恢复为默认值。

从 MSDN 游标类

派生自 Control 类的所有控件都有一个游标 财产。更改鼠标指针在 在控件的边界内,将光标分配给光标 控件的属性。或者,您可以在 通过将游标分配给当前属性来达到应用程序级别

最新更新