Zac*_*son 3 .net wpf multithreading backgroundworker mouse-cursor
我想显示沙漏光标并在BackgroundWorker进程在另一个线程中运行时禁用窗口.
这就是我正在做的事情:
Private Sub MyButton_Click(...)
Dim box As New AnotherWpfWindow()
box.Owner = Me
...
box.ShowDialog()
If (box.DialogResult.GetValueOrDefault = True) Then
Me.IsEnabled = False
Me.Cursor = Cursors.Wait
MyBackgroundWorker.RunWorkerAsync()
End If
End Sub
Private Sub MyBackgroundWorker_RunWorkerCompleted(...)
UpdateInterface()
Me.IsEnabled = True
Me.Cursor = Cursors.Arrow
End Sub
Run Code Online (Sandbox Code Playgroud)
窗口会像我想要的那样被禁用,但光标仍然是一个箭头.我如何使它成为等待光标?
根据这个问题,它似乎适用于vg1890: 在WPF窗口中禁用除一个控件之外的所有控件
Rob*_*ben 11
另一种方法是全局更改光标,是..
Mouse.OverrideCursor = Cursors.Wait;
//Do something
//...
Mouse.OverrideCursor = null;
Run Code Online (Sandbox Code Playgroud)
这里似乎发生的是WPF忽略禁用窗口上的Cursor设置.以下解决方法似乎有效:禁用窗口内容,而不是禁用窗口本身:
C#:
((UIElement)Content).IsEnabled = false;
Cursor = Cursors.Wait;
// and in RunWorkerCompleted handler:
((UIElement)Content).IsEnabled = true;
Cursor = Cursors.Arrow;
Run Code Online (Sandbox Code Playgroud)
Visual Basic:
DirectCast(Content, UIElement).IsEnabled = False
Cursor = Cursors.Wait
' and in RunWorkerCompleted handler:'
DirectCast(Content, UIElement).IsEnabled = True
Cursor = Cursors.Arrow
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12234 次 |
| 最近记录: |