让父窗体设置为Enable = true后,模态对话框状态无效
本文关键字:模态 对话框 无效 状态 true 窗体 设置 Enable | 更新日期: 2023-09-27 18:16:17
我有2个窗体,Form1是父窗体, Form2是子窗体。我需要打开form2的form1,通过使用模式对话框模式。
在我需要获取一些数据之前,它将花费几秒钟的时间,为了锁定应用程序,我使用
form1.Enable = false;
然后我得到了显示对话框
所需的数据// this is happened in Form1
form2.ShowDialog(this);
由于某种原因,我不能让form1 Enable=true
在那之前。最后,当我完成所有的事情,然后我恢复form1
form1.Enable = true;
但是问题是模态对话框模式不再工作了。我仍然可以点击form1 UI而不关闭form2
要模拟这个东西,可以使用form1中的代码:
public Form1()
{
InitializeComponent();
new Action(() =>
{
// lock the application first
System.Threading.Thread.Sleep(2000);
this.BeginInvoke(new Action(() =>
{
this.Enabled = false;
}));
// get data and show form2
System.Threading.Thread.Sleep(1000);
this.BeginInvoke(new Action(() =>
{
Form2 form2 = new Form2();
form2.ShowDialog(this);
}));
// after all thing , restore form1
System.Threading.Thread.Sleep(2000);
this.BeginInvoke(new Action(() =>
{
this.Enabled = true;
}));
}).BeginInvoke(null, null);
}
然后你会发现form2不再显示为对话框模态窗口。有什么办法能修好它吗?谢谢你。
当您关闭Form
时,它是Dispose
d,不应再次显示。如果您想再次显示它,请将其改为Hide
。