Csharp/C#教程:ShowDialog没有阻止来电者分享


ShowDialog没有阻止来电者

我有一个强大的命名集会。

以前曾经问过这个问题……但只是出于不同的目的。

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

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

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

如果我知道所有不同类型的消息允许正确重新绘制,而IsBusy == true我不介意WndProc方法,但我没有。

所以,我的问题是:

有更好的解决方案吗?

要么

jar头有人告诉我应该通过什么WndProc消息? 或者在哪里找到词汇表?

谢谢。

我结束了BeginInvoke的ShowDialog:

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

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

如果要通过绘画,请允许WM_PAINTWM_NCPAINT

你太复杂了。 您所要做的就是阻止对话框关闭。 实现FormClosing事件(或覆盖OnFormClosing,更好)并在操作繁忙时设置e.Cancel = true。 然后,用户无法干扰您的过程。

这都是假设您使用工作线程来实现操作。

上述就是C#学习教程:ShowDialog没有阻止来电者分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1031584.html

(0)
上一篇 2022年1月14日
下一篇 2022年1月14日

精彩推荐