Form1
2 つのラジオ ボタン (rb1
とrb2
) と 1 つの通常のボタン ( )がありbtn
ます。をクリックすると、 ifの MDI 子がチェックされているか、通常のifがチェックされているので、btn
開く必要があります。また、一度に開くことができるのは 1 つだけです。Form2
Form1
rb1
Dialog
rb2
Form2
これは私のコードです:
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
MDIの子として最大化してから閉じる場合を除いて、すべてが正常に機能します。その後、画面は同じままです (私は閉じていませんでしたForm2
) が、 new を開くことができ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
閉じる必要がありますが、なぜ非表示にする必要があるのか わかりません。
ありがとう!