我们有一个已启动并运行两年的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。
答案 0 :(得分:0)
当你的一个例程中存在未处理的异常时,就会发生这种情况。
如果没有抛出异常,则会在线程例程,LINQ查询或表单的InitializeComponent()
部分中发生。
要恢复Cursor
,请执行以下操作:
Cursor.Current = Cursors.WaitCursor;
try {
ShowForm(FormSettings);
FormSettings.ReInit();
} finally {
Cursor.Current = Cursors.Default;
}
但是,您在ShowForm
或ReInit()
的某个地方遇到了问题。你应该去那些例程并在那里添加一个try...catch
,直到你把它整理出来。
答案 1 :(得分:0)
此问题的解决方案是处理表单代码中的所有游标更改。
不确定为什么有一半甚至在其他方法中都有效,但现在一切正常。