【发布时间】:2011-08-08 18:12:21
【问题描述】:
我的项目中有 Form1 和 Form2。 Form2 只是一个带有 Form1 设置的表单。从 Form1 打开 Form2 的命令是什么,以及关闭它的命令是什么?
【问题讨论】:
我的项目中有 Form1 和 Form2。 Form2 只是一个带有 Form1 设置的表单。从 Form1 打开 Form2 的命令是什么,以及关闭它的命令是什么?
【问题讨论】:
您需要处理因用户交互而引发的 Form1 上的 事件。例如,如果您有一个用户单击以显示设置表单 (Form2) 的“设置”按钮,您应该为该按钮处理 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();
【讨论】:
//To open the form
Form2 form2 = new Form2();
form2.Show();
// And to close
form2.Close();
希望对你有帮助
【讨论】:
如果你想以模态方式打开Form2(意味着你不能在Form2打开时点击Form1),你可以这样做:
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();
}
【讨论】:
我假设您在谈论 Windows 窗体:
要显示您的表单,请使用 Show() 方法:
Form form2 = new Form();
form2.Show();
使用 Close() 关闭表单:
form2.Close();
【讨论】:
在一行中是:
(new Form2()).Show();
希望对你有帮助。
【讨论】:
在任何点击事件(或其他点击事件)上:
Form2 frm2 = new Form2();
frm2.Show();
【讨论】:
分别为Form.Show()(或Form.ShowDialog(),如果您希望第二种形式是模态的)和Form.Hide()(或Form.Close(),取决于您所说的close it)。
【讨论】:
如果您需要将Form2 显示为modal dialog,请在Form1 中执行:
var form2 = new Form2();
if (form2.ShowDialog() == DialogResult.OK)
{
// process results here
}
模式对话框在打开时将保持焦点;它会将父窗口 (Form1) 设置为“在后台”,直到它关闭,这是设置窗口的常见做法。
【讨论】:
从这个开始:
var dlg = new Form2();
dlg.ShowDialog();
【讨论】:
Form1 OpenNewForm = new Form1();
OpenNewForm.Show();
“OpenNewForm”是表单的名称。 在第二个表单打开。
如果要关闭之前的表单:
this.Close();
【讨论】:
在 C#.Net 中,如果您在解决方案内部和项目内部,并且 Form2(带有 Form2.cs)在内部,
private void button1_Click(object sender, EventArgs e)
{
ProjectName.Form2 secondaryForm= new ProjectName.Form2();
secondaryForm.Show();
}
【讨论】: