2013-05-02 68 views
2

我已经使用这个代码从目前的形式打开一个新的形式:如何在第二种形式打开时禁用第一种形式?

private void add_Click(object sender, EventArgs e) 
{ 
     add obj = new add(); 
     obj.Show(); 
} 

private void welcome_FormClosed(object sender, FormClosedEventArgs e) 
{ 
     Application.Exit(); 
} 

private void view_Click(object sender, EventArgs e) 
{ 
     view obj = new view(); 
     obj.Show(); 
} 

private void update_Click(object sender, EventArgs e) 
{ 
     update obj = new update(); 
     obj.Show(); 
} 

private void delete_Click(object sender, EventArgs e) 
{ 
     delete obj = new delete(); 
     obj.Show(); 
} 

在此,如果我打开任何形式的,那么前面的形式也照常工作。 我想,如果一个窗体打开,然后所有其他以前的窗体关闭或禁用,听起来像一个单击事件上一个按钮的嘟嘟声。

+7

使用ShowDialog()而不是Show(); – Fendy 2013-05-02 08:30:19

+0

@Fendy刚刚建议它,但你比我快20秒) – 1Mayur 2013-05-02 08:31:14

+0

请你解释show和showdialog的区别 – user2327043 2013-05-02 08:35:10

回答

4

为什么不尝试隐藏表单,然后在被调用表单关闭时关闭它,以便它不会留在内存中。喜欢这个。

让我们在Form1上说,你点击一个按钮,以显示窗体2

Form2 frm2 = new Form2(); 
frm2.Activated += new EventHandler(frm2_Activated); 
frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed); 
frm2.Show(); 

现在,这个人是当窗体2显示或激活隐藏主叫形式,在这种情况下,在Form1

private void frm2_Activated(object sender, EventArgs e) 
    { 
     this.Hide(); // Hides Form1 but it is till in Memory 
    } 

这一个当被调用的表单在这种情况下被关闭的情况下Form2它也将关闭Form1,以便它不会留在内存中。

private void frm2_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     this.Close(); // Closes Form1 and remove this time from Memory 
    } 
+0

现在你会解释一下,这个代码做什么 – user2327043 2013-05-02 10:08:53

+0

看到我的意见上面@ user2327043,上帝保佑。 – Edper 2013-05-02 10:20:03

+1

欢迎您@ user2327043。 – Edper 2013-05-02 10:33:40

1

尝试使用,这将关闭您当前的表单。

obj.ShowDialog(); 
this.close(); 
4

您必须使用ShowDialog而不是Show

ShowDialog的():

打开一个窗口,并且仅当被关闭时新打开的窗口返回。

展():

打开一个窗口,并返回,而无需等待新打开的窗口关闭。

+0

谢谢先生.. – user2327043 2013-05-02 10:25:29

相关问题