如何在表单内的表单内显示对话框

时间:2018-10-29 06:16:13

标签: c# forms winforms backgroundworker

我想

1)在主窗口上,我有Form1

2)我有一名后台工作人员正在寻找特定的事情

3)当发生某些特定情况时,我想“模糊”整个屏幕,所以我在后台工作器中生成了一个新的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上移开,它就会“解除阻止”,消失并显示对话框。

我在做什么错了?

0 个答案:

没有答案