让父窗体设置为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不再显示为对话框模态窗口。有什么办法能修好它吗?谢谢你。

让父窗体设置为Enable = true后,模态对话框状态无效

当您关闭Form时,它是Dispose d,不应再次显示。如果您想再次显示它,请将其改为Hide