c# - 如何在表单内的表单内显示对话框
问题描述
我想要
1)在我的主窗口上,我有 Form1
2)我有一个后台工作人员正在寻找特定的事情发生
3)当某些特定的事情发生时,我想“模糊”整个屏幕,所以我在 backgroundworker 中生成了一个新的 BlurForm(这可行)
4)此外,在这个 BlurForm 上,我想要一个用户输入姓名和年龄的对话框。
我的问题:
1)调用对话框后“模糊”立即消失
2)整个应用程序“冻结”
我的代码:
MyBackgroundWorker.cs
var blurrer = new BlurForm(_parent) // _parent is Form1 (main Form)
blurrer.ShowSpecificDialog(new MyData(){...});
BlurForm.cs
public BlurForm(Form owner){
_owner = owner;
Initialize(owner); // Set width, color etc.
Show(); // Default method to show.
}
public DialogResult ShowSpecificDialog(MyData data){
var dialog = new MyDialog(this, data); // this = parent-form of the dialog
return dialog.ShowDialog(_owner);
}
现在发生的是,BlurForm 显示(屏幕如我所愿模糊),对话框显示(但它也被模糊“覆盖”(为什么?))和屏幕“冻结”(我认为模糊“块”)。一旦我将焦点从 BlurForm 上移开,它就会“解除阻塞”,消失并且清楚地显示对话框。
我究竟做错了什么?
解决方案
推荐阅读
- c# - 如何在 Visual Studio 2017 中以编程方式捕获 Web 方法调试行
- css - 使用 Chrome 扩展调整 CSS
- graph - Grafana SingleStat:超过阈值的时间百分比
- sql - SQL Left Join - 在一个条件下加入,默认为另一个条件
- selenium - 如何解决“不推荐使用构造函数 ChromeDriver(Capabilities)”和 WebDriverException:ChromeDriver 和 Chrome 超时错误
- git - 如何在不冒两个项目相互偏离的风险的情况下分离公共/私有代码?
- vba - FormulaR1C1 动态参考
- angular - Nativescript,方法帖子
- r - 匹配不同模式的正则表达式
- python - 如何创建一个对二维数组的值求和的数组