我在Winforms中创建了2个表单。我在Form1中有按钮,在Form2中有一些文本。 当单击表单中的按钮时,我通过单击事件来显示form2。当我关闭form2时,form1也将关闭。
但是我希望不关闭form1。
Form1代码:
public Form1()
{
InitializeComponent();
button1.Click += Button1_Click;
}
private void Button1_Click(object sender, EventArgs e)
{
var form = new Form2();
form.Show();
}
Form2:
仅显示名称和城市详细信息之类的信息。
我刚刚创建了一个简单的示例,因为我还处于起步阶段。
请分享您的想法和想法。
答案 0 :(得分:0)
Form1应该记住它创建了哪个Form2。关闭Form2时,它应通知Form1,以便Form1可以取消对Form2的引用
private Form2 form2 = null;
void ShowForm2(...)
{
if (this.form2 != null) return; // form2 already shown
this.form2 = new Form2();
// make sure you get notified if form 2 is closed:
this.form2.FormClosed += onFormClosed;
}
void OnFormClosed(object sender, EventArgs e)
{
if (object.ReferenceEquals(sender, this.form2)
{
// form2 notifies that it has been closed
// form2 will Dispose itself
this.form2 = null;
}
}
Form1和Form2的整洁
注意:如果Form1是Closing,最好询问Form2是否允许使用Closing(也许是否需要询问操作员?)。如果Form2不想关闭,请取消关闭Form1。
如果允许关闭,请记住您正在关闭Form1和Form2。当Form2通知Form1它已关闭时,请检查您是否正在关闭,如果是,则重新启动关闭过程,这次将没有Form2,并且可以正常继续关闭。