【问题标题】:Changing cursor from wait to default does not work while changing form更改表单时将光标从等待更改为默认值不起作用
【发布时间】:2012-02-12 02:50:21
【问题描述】:

我们有一个 Windows Mobile 6 项目已经启动并运行了两年。

在开发新版本时,光标更改在我们的某些设备上停止工作。

最成问题的地方是换表格的时候。代码基本上是:

Cursor.Current = Cursors.WaitCursor;            
ShowForm(FormSettings);
FormSettings.ReInit();
Cursor.Current = Cursors.Default;

WaitCursor 出现但从不消失。

在调试时,我可以清楚地看到所有代码行都已执行,并且在最后一条语句之后,我可以在“监视”或“立即”窗口中检查 Cursor.Current 的值,并看到它清楚地设置为 Cursors。默认值(或者更确切地说是 Cursor.Default 的值 - 带有“箭头”的东西)。

更多信息:

如果我在FormSettings.ReInit() 的末尾添加一个MessageBox.Show(""),光标将消失/变成Cursors.Default。

【问题讨论】:

    标签: windows-mobile compact-framework


    【解决方案1】:

    当您的某个例程中出现未处理的异常时,就会发生这种情况。

    如果没有引发异常,则说明它发生在线程例程、LINQ 查询或表单的 InitializeComponent() 部分中。

    要找回您的Cursor,请执行以下操作:

    Cursor.Current = Cursors.WaitCursor;
    try {
      ShowForm(FormSettings);
      FormSettings.ReInit();
    } finally {
      Cursor.Current = Cursors.Default;
    }
    

    但是,您在 ShowFormReInit() 的某个地方遇到了问题。你应该去那些例程并在那里添加一个try...catch,直到你把它整理出来。

    【讨论】:

    • 谢谢,应该补充一点,我可以单步执行代码并验证所有行都已执行并且 Cursor.Current 的值设置正确。相应地更新了问题。
    【解决方案2】:

    解决这个问题的方法是处理表单代码中的所有光标变化。

    不知道为什么即使在另一种方法中也有一半有效,但现在一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-02
      • 2018-04-08
      • 1970-01-01
      • 2018-11-12
      • 1970-01-01
      • 2012-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多