私は現在MDI Parent Form
を使用していますが、の項目の1つをクリックしてForm
を開きます。私は複数のアイテムを開くのではなく、そのアイテムを開くことができるコードを持っていますForms
。C#でMDIフォーム内のフォームを開く/閉じることができません
frmRegUser frm = null;
private void createToolStripMenuItem_Click(object sender, EventArgs e)
{
if (frm == null)
{
frm = new frmRegUser();
frm.MdiParent = this;
}
frm.WindowState = System.Windows.Forms.FormWindowState.Maximized;
frm.Show();
}
これまでのところは良いが、その後MDI Parent Form
の内側Form
を閉じて、もう一度同じcreateToolStripMenuItem
を開こうとした後、それは誤り
が配置されたオブジェクトにアクセスすることはできません私を表示します。オブジェクトの名前:「frmRegUser」
その後、私はそれについて検索し、このコードを入れfrmRegUser closing event
の内のコードを使用しようとしました:
this.Hide();
this.Parent = null;
e.Cancel = true;
I場合には、フォームを再度開くことができません欲しい
あなたはどのようなイデアを持っていますかこの問題を解決するにはどうすればよいですか?
意味「あまりにも機能していない」んか?もちろん、 'Close'イベントハンドラがなければ、' frm'は閉じられたときに破棄されます。そのハンドラでは、_closing_の代わりにフォームを隠すことで回避します。たぶんあなたは 'Parent'をヌルに設定したり、再度表示する際にリセットしたりしないでください。 –
これは、 'this.Parent = null;'行を削除することで問題を解決しました。@RenéVogt – Rekcs
frm.FormClosed + = delegate {frm = null; }; –