我有一个带有两个按钮的MdiParent,当button1点击form1时会显示,当button2点击时form2会显示,然后form1会隐藏,反之亦然。例如我点击button1 form1打开,然后我输入form1的文本框。之后,我点击button2然后form2显示和form1隐藏。问题是当我再次单击form1所显示的button1时,textBox中以前的类型丢失。看起来表单并不隐藏,而是关闭,然后单击按钮时再次打开。隐藏MDi的子表单
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();
}
}
我这是怎么打开childform:
编辑
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);
}
}
@ mdcuesta,还是一样 –
你能证明你实例的形式,并调用扩展方法的OpenForm的代码,它可能是你创造的方法范围的对象,它死在方法的最后。 –
mdcuesta
@ mdcuesta-完成:) –