我有一个带有两个按钮的 MdiParent,当 button1 单击时 form1 将显示,当 button2 单击 form2 时将显示 form1 将隐藏,反之亦然。例如,我单击 form1 打开的 button1,然后输入 form1 的 textBox。之后,我单击 button2 然后 form2 显示和 form1 隐藏。问题是当我再次单击 form1 显示的 button1 但之前在 textBox 中的类型丢失时。似乎表单并没有隐藏而是关闭,然后在单击按钮时再次打开。
public static class Extensions
{
public static void openForm<T>(this T frm, Form parent) where T : Form, new()
{
foreach (Form childForm in parent.MdiChildren)
{
childForm.Visible = false;
}
foreach (Form form in Application.OpenForms)
{
if (form.GetType() == typeof(T))
{
form.Visible = true;
return;
}
}
frm = new T();
frm.MdiParent = parent;
frm.WindowState = FormWindowState.Normal;
frm.StartPosition = FormStartPosition.CenterScreen;
frm.MaximizeBox = false;
frm.MinimizeBox = false;
frm.Show();
}
}
这就是我打开子窗体的方式:
编辑
public partial class MainForm : Form
{
form1 newform1 = new form1();
form2 newform2 = new form2();
private void Button1_Click(object sender, EventArgs e)
{
newform1.openForm(this);
}
private void Button2_Click(object sender, EventArgs e)
{
newform2.openForm(this);
}
}