gpt4 book ai didi

c# - ShowDialog 不阻塞调用者

转载 作者:行者123 更新时间:2023-11-30 18:52:58 26 4
gpt4 key购买 nike

我有一个强命名程序集。

之前有人问过这个问题......但只是出于不同的目的。

我有一个 Form 基类。当实现类在基类 IsBusy 上设置属性时。我想阻止与表单的所有交互(设置 Enabled = false 是不够的 - 我还想阻止移动、调整大小、关闭等......而且我不希望我的控件在 IsBusy 时看起来已禁用== true) 并在前面显示一个弹出式加载表单(一个带有加载动画的透明无边框表单)。

在我的加载动画表单上调用 ShowDialog 可以阻止调用表单上的交互...但显然我还希望调用表单代码继续执行。

现在我正在使用新的 LoadingForm().Show(),然后在我的调用窗体上处理 WndProc,如果 IsBusy == true,我会抑制所有 WndProc 消息...但我不会不喜欢这种方法。它也可以防止重新绘制表单,这是我不想要的。

如果我知道在 IsBusy == true 时让所有不同类型的消息通过以允许正确重绘,我就不会那么介意 WndProc 方法......但我不知道。

所以,我的问题是:

有没有更好的解决方案?

有人能告诉我应该让哪些 WndProc 消息通过吗?或者在哪里可以找到词汇表?

谢谢。

最佳答案

我结束了 BeginInvoke'ing 一个 ShowDialog:

myForm.BeginInvoke(new Action(() => new LoadingForm().ShowDialog()));

这具有让该行之后的代码继续运行并仍然阻止与 myForm 的所有交互的预期效果。

关于c# - ShowDialog 不阻塞调用者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7150770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com