我正在构建一个文档管理系统,我正在尝试在文档加载时将光标更改为“等待”光标,非常标准。
根据MSDN文档,我使用以下代码:
System.Windows.Input.Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
try
{
newPage.LoadForm(data);
}
finally
{
System.Windows.Input.Mouse.OverrideCursor = null;
}
问题是,在LoadForm完成后,光标不会返回到正常状态。我已经调试了程序并且正在运行“null”行,所以我不知道问题是什么。
有什么想法吗?
答案 0 :(得分:2)
如果这是一个长时间运行的操作,您可以考虑将整个代码移动到一个Task(尽管在这种情况下,您必须将对OverrideCursor
属性的更改分派回主线程)。
我使用Sleep模拟一个长时间运行的应用程序快速测试了它,它似乎工作正常(我把这个代码放在一个空的WPF应用程序中的窗口构造函数中进行测试)。
Task.Factory.StartNew(() =>
{
Application.Current.Dispatcher.Invoke(() =>
System.Windows.Input.Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait);
try
{
Thread.Sleep(5000);
}
finally
{
Application.Current.Dispatcher.Invoke(() =>
System.Windows.Input.Mouse.OverrideCursor = null);
}
});
答案 1 :(得分:0)
替代方法
您必须将其设置为所需的光标类型,而不是将其设置为null。因此,不要将其设置为null,而是将其设置为Arrow(我假设这是您在Normal状态下所需的)。
所以在finally块中用这个替换你的代码:
System.Windows.Input.Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
编辑1:
如果您不想使用变通方法,请尝试在try块结束时将Cursor设置为null。