更改窗体时,将光标从等待更改为默认值不起作用

时间:2012-01-17 09:32:51

标签: windows-mobile compact-framework

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

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

最有问题的地方是改变形式。代码基本上是:

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

WaitCursor出现但永不消失。

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

更多信息:

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

2 个答案:

答案 0 :(得分:0)

当你的一个例程中存在未处理的异常时,就会发生这种情况。

如果没有抛出异常,则会在线程例程,LINQ查询或表单的InitializeComponent()部分中发生。

要恢复Cursor,请执行以下操作:

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

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

答案 1 :(得分:0)

此问题的解决方案是处理表单代码中的所有游标更改。

不确定为什么有一半甚至在其他方法中都有效,但现在一切正常。