2011-04-19 97 views

回答

37

您需要处理由于用户交互而引发的Form1上的事件。举例来说,如果你有一个“设置”按钮,用户点击以显示设置窗体(Form),你应该处理Click事件该按钮:

private void settingsButton_Click(Object sender, EventArgs e) 
{ 
    // Create a new instance of the Form2 class 
    Form2 settingsForm = new Form2(); 

    // Show the settings form 
    settingsForm.Show(); 
} 

除了Show method,你也可以选择使用ShowDialog method。不同之处在于后者将窗体显示为模态对话框,这意味着用户在关闭模态窗体之前无法与应用程序中的其他窗体进行交互。这与消息框的工作方式相同。 ShowDialog方法还返回一个值,指示窗体如何关闭。


当用户关闭的设置形式(通过单击标题栏中的“X”,例如),Windows将自动采取关闭它的照顾。

如果希望用户要求将其关闭之前,自己关闭它,你可以调用窗体的Close method

this.Close(); 
+0

我抬头看到的所有其他答案都返回了一个错误!你的答案在这里工作。谢谢<3 – 2017-07-14 23:35:47

2

用户点击事件(或另一种):

Form2 frm2 = new Form2(); 
frm2.Show(); 
1

如果你需要显示Form2modal dialog,从Form1内做到:

var form2 = new Form2(); 
if (form2.ShowDialog() == DialogResult.OK) 
{ 
    // process results here 
} 

模式对话框将保留焦点,而它是开放的;它会将父窗口(Form1)设置为“在后台”,直到它被关闭,这对于设置窗口来说是相当常见的做法。

4

我假设你在谈论Windows窗体:

要显示的形式使用Show()方法:

Form form2 = new Form(); 
form2.Show(); 

关闭窗体使用关闭():

form2.Close(); 
+0

好的,谢谢你,它工作的很好......如果我在form2中设置类似于int a的东西......并且我想关闭form2后的主form1知道INT中的是什么? – Nasgharet 2011-04-19 14:57:08

0

从此开始:

var dlg = new Form2(); 
dlg.ShowDialog(); 
7
//To open the form 

Form2 form2 = new Form2(); 

form2.Show(); 
// And to close 
form2.Close(); 

希望这有助于

+0

好的,谢谢你,它工作的很好......如果我在form2中设置类似int a的东西......并且我想在关闭form2后的主Form1知道INT中的是什么? – Nasgharet 2011-04-19 14:52:41

+0

既然你在你的主表单上有一个Form2的实例,你总是可以有一个属性来访问这个int值。只需确保在关闭表单之前存储该int值 – cush 2011-04-19 15:42:37

5

如果你想打开Form2模态(这意味着你不能在Form1上单击窗体2时是打开的),你可以这样做:

using (Form2 f2 = new Form2()) 
{ 
    f2.ShowDialog(this); 
} 

如果您想要以非模态方式打开Form2(意味着您仍然可以在Form2打开时单击Form1),则可以创建Form2的表单级引用,如下所示:

private Form2 _f2; 

public void openForm2() 
{ 
    _f2 = new Form2(); 
    _f2.Show(this); // the "this" is important, as this will keep Form2 open above 
        // Form1. 
} 

public void closeForm2() 
{ 
    _f2.Close(); 
    _f2.Dispose(); 
} 
2

在单行那就是:

(new Form2()).Show(); 

希望它能帮助。

相关问题