我使用ApplicationContext显示2个相同表单的窗口。这很完美。但现在我必须在两个窗口中显示一个额外的对话框,用户可以在其中选择一些设置。
当我使用ShowDialog显示此对话框时,焦点仅在一个窗口中,另一个窗口被冻结,直到我关闭dialogForm。我知道这是因为showdialog以模态模式显示表单。
如何避免这种行为,让两种形式相互独立?我可以使用ApplicationContext吗?
的Program.cs:
class MyApplicationContext : ApplicationContext
{
List<MainForm> forms = new List<MainForm>();
public MyApplicationContext(int numForms)
{
for (int i = 0; i < numForms; i++)
{
forms.Add(new MainForm(i));
}
}
void MyApplicationContext_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
}
[STAThread]
static void Main(string[] args){
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MyApplicationContext ac = new MyApplicationContext(2);
Application.Run(ac);
}
MainForm.cs:
public MainForm(int id)
{
InitializeComponent();
this.Invoke(new MethodInvoker(delegate ()
{
DialogForm frm = new DialogForm ();
frm.ShowDialog(this);
}));
}