У меня есть MdiParent с двумя кнопками, когда button1 нажимает форму 1, показывается, и когда button2 нажимает форму, будет отображаться, тогда форма 1 будет скрываться и наоборот. Например, я нажимаю кнопку1, когда открывается форма1, затем я ввожу текстовое поле формы1. После этого я нажимаю кнопку2, затем отображается форма 2 и образует1. Проблема заключается в том, что я снова нажимаю кнопку 1, пока не появится форма1, но ранее отсутствующий тип 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:
EDIT
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- done :) –