c# - 强制 WaitCursor 到模态窗体的父窗体

标签 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,结果相同。

最佳答案

你试过吗:

Mouse.OverrideCursor = Cursors.Wait;

关于c# - 强制 WaitCursor 到模态窗体的父窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9637349/

相关文章:

c# - 即使控件没有定义 ContextMenu,也会引发 ContextMenuOpening 事件

c# - WinForms 图表 : Set minimum Y Axis display range

swift - 如何将光标插入 UILable 的文本

mysql - 对另一个表中的所有 ID 运行 MySql 查询

swift - 如何在启动 OSX spritekit 应用程序时设置自定义光标?

c# - 检查 RichTextBox ScrollBar thumb 是否在滚动条的底部

c# - 通过分隔符而不是 C# 中的索引将列表拆分为子列表

c# - 在 C# 中终止远程计算机上的进程

c# - DataGridView AddRange,将 IEnumerable<object[]> 转换为 DataGridViewRow[](如果可能,使用 LINQ)

c# - 这是我的 child 吗?