0

フォームをナビゲートしたかったので、buttonKlientをクライアントにすると、Form2に移動し、control'x'をクリックするとForm1に戻ります。

fkですForm2

   private void button1_Click(object sender, EventArgs e) {
                if (fk == null)
                    fk = new OknoKlient();
                fk.Tag = this;
                fk.Show(this);//here is ObjectDisposedException
                Hide();
            }

その後、Form2

 protected override void OnFormClosing(FormClosingEventArgs e) {
            if (e.CloseReason == CloseReason.WindowsShutDown) return;
            var form1 = (Form1)Tag;
            form1.Show();
            Hide();
            // DO WHATEVER HERE
        }

開くをクリックbutton1してForm2 fkから、コントロールで閉じてからx、button1をもう一度クリックすると、例外が発生しますObjectDisposedException

4

1 に答える 1

0
protected override void OnFormClosing(FormClosingEventArgs e) {
    if (e.CloseReason == CloseReason.WindowsShutDown) return;
    e.Cancel = true; // <---------------------- this
    var form1 = (Form1)Tag;
    form1.Show();
    Hide();
    // DO WHATEVER HERE
}

はい、フォームを非表示にしていますが、フォームはまだ破棄されています。e.Cancel = true;フォームの終了をキャンセルするには、追加する必要があります。

于 2013-01-19T23:05:58.867 に答える