将WaitCursor强制转换为模态窗体的父窗体

时间:2012-03-09 16:15:03

标签: c# winforms cursor modal-dialog

我有一个表单,当BackgroundWorker正在工作时显示加载动画,并在工作完成时关闭。我用以下代码显示它:

using (BackgroundWorker bw = new BackgroundWorker())
using (LoadingPopup loadingPopup = new LoadingPopup(bw))
{
    bw.DoWork += delegate
    {
        DoMyWork();
    };

    loadingPopup.ShowDialog(this);
}

我的LoadingPopup表单在OnShown中启动后台工作程序,当后台工作程序完成时它会自行关闭。

如果用户将鼠标悬停在父表单或子表单的任何部分上,我希望显示WaitCursor。

我尝试将代码添加到LoadingPopup OnShown事件,将Parent.Cursor,Owner.Cursor,this.Cursor和Cursor.Current设置为WaitCursor,然后将它们设置回OnClosed事件中的Cursor.Default。但是当我将鼠标悬停在父窗体上时,我总是会得到一个默认光标。

任何强制此Cursor或甚至设置应用程序范围游标的方法?

编辑:我也尝试将更改插入父级中ShowDialog代码行之前和之后的Cursor。它仍然无法正常工作。我希望LoadingPopup无论如何都要管理光标以获得可重用性。

我还尝试在子窗体和父窗体上将UseWaitCursor属性设置为true,并且它具有相同的结果。

1 个答案:

答案 0 :(得分:0)

你试过了吗?

Mouse.OverrideCursor = Cursors.Wait;