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