我有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不再显示为对话框模态窗口了。有什么办法解决吗?谢谢。
答案 0 :(得分:0)
当您关闭Form
时,Dispose
d并且不应再次显示。如果您想再次显示,请改为Hide
。