메뉴에서 양식을 호출하고 MDI 양식을 클릭한다고 가정하면 다음과 같이 최상위 수준에서 해당 양식의 인스턴스 선언을 만들어야합니다.
Form1 fm = null;
그런 다음 다음과 같이 Form1을 호출하는 메뉴 클릭 이벤트를 정의해야합니다.
private void form1ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (fm == null|| fm.Text=="")
{
fm = new Form1();
fm.MdiParent = this;
fm.Dock = DockStyle.Fill;
fm.Show();
}
else if (CheckOpened(fm.Text))
{
fm.WindowState = FormWindowState.Normal;
fm.Dock = DockStyle.Fill;
fm.Show();
fm.Focus();
}
}
CheckOpened는 Form1에 이미 열거 나하지되어 있는지 확인하기 위해 정의 :
private bool CheckOpened(string name)
{
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (frm.Text == name)
{
return true;
}
}
return false;
}
이것이 이미 열려 있거나 최소화 된 경우 메뉴 클릭시 Form1에 초점을 맞추는 양식의 여러 인스턴스를 만드는 문제가 해결되기를 바랍니다.