将WaitCursor强制到模式窗体的父窗体

本文关键字:窗体 模式 WaitCursor | 更新日期: 2023-09-27 18:27:12

我有一个Form,它在BackgroundWorker工作时显示Loading动画,并在工作完成时关闭。我用以下代码显示它:

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。但是当我将鼠标悬停在父窗体上时,我总是得到一个Default光标。

有什么方法可以强制使用这个游标,甚至设置应用程序范围的游标吗?

编辑:我还尝试在父级的ShowDialog代码行前后插入对Cursor的更改。它仍然没有起作用。为了可重用性,我更希望LoadingPopup无论如何都能管理光标。

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

将WaitCursor强制到模式窗体的父窗体

您尝试过吗:

Mouse.OverrideCursor = Cursors.Wait;