将父Form设置为Enable = true后,模态对话框状态无效

时间:2015-10-06 09:47:36

标签: c# .net winforms

我有2个表格,Form1是,Form2是孩子。 我需要通过form1打开form2,使用模态对话框模式。

在此之前,我需要获取一些数据,它需要几秒钟,用于锁定应用程序,我使用

form1.Enable = false;

然后我得到了显示对话框所需的数据

// this is happened in Form1    
form2.ShowDialog(this);

由于某种原因,我不能在此之前让form1 Enable=true。 最后,在我完成所有事情之后,我恢复了form1

form1.Enable = true;

但问题是模态对话框模式不再起作用了。我仍然可以点击form1 UI,而不是关闭form2

对于模拟事物,您可以在Fomr1中使用此代码:

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不再显示为对话框模态窗口了。有什么办法解决吗?谢谢。

1 个答案:

答案 0 :(得分:0)

当您关闭Form时,Dispose d并且不应再次显示。如果您想再次显示,请改为Hide