首页 > 解决方案 > 如何在表单内的表单内显示对话框

问题描述

我想要

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#formswinformsbackgroundworker

解决方案


推荐阅读