두 개의 라디오 단추 (rb1
및 rb2
)와 하나의 일반 단추 (btn
)가있는 Form1
이 있습니다. btn
을 클릭하면 Form1
인 경우 rb1
인 경우 Form2
을 열어야합니다. rb1
인 경우 Dialog
인 경우 rb2
을 선택하면됩니다. 또한 언제든지 열린 Form2
하나만있을 수 있습니다. 그것이 내가 MDI의 자식으로 Form2
을 극대화 할 때를 제외하고 닫해야으로최대화 된 MDI 자식 폼을 닫을 때 아무 것도 발생하지 않습니다.
public partial class Form1 : Form
{
Form2 f2;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (f2 != null)
{
MessageBox.Show("Close form!");
return;
}
f2 = new Form2();
if (radioButton1.Checked == true)
{
this.IsMdiContainer = true;
f2.MdiParent = this;
f2.Show();
}
else
{
f2.Show();
}
f2.FormClosed += f2_FormClosed;
}
void f2_FormClosed(object sender, FormClosedEventArgs e)
{
this.IsMdiContainer = false;
f2 = null;
}
}
모든 작품 :
이 내 코드입니다. 그 화면이 똑같이 유지되면 (심지어 내가 닫지 않았으므로 Form2
), 새로운 Form2
을 열 수 있고, Form1
의 제목은 "Form1 - [Form2]
"이고, 프로세스를 반복하면 "Form1 - [Form2] - [Form2]
"등이됩니다. .
나는 내 f2_FormClosed
방법은
void f2_FormClosed(object sender, FormClosedEventArgs e)
{
f2.Hide(); // <<<<<<<<-----------NEW
this.IsMdiContainer = false;
f2 = null;
}
해야하지만 난 이유를 모르는 파악; Form2
이 닫혀 있어야합니다, 왜 내가 그것을 숨길 수 있어야할지 모르겠다!
감사합니다.
창을 만든 양식에서 IsMdiContainer 속성을 변경하면 * 많은 * 부작용이 있습니다. 하지 마. –