0

ボタンクリックで新しいウィンドウフォームを開こうとしています

メインプログラムのコンストラクターには、次のものがあります。

form_targeting = new Targeting();

button1_Click(...)には次のものがあります。

form_targeting.Show();

メインプログラムのフィールドにはofcがあります

public static Targeting form_targeting;

初めて開くときは、正しく動作します。2番目のウィンドウを閉じて、1番目のウィンドウのボタンをもう一度押すと、エラーが発生します。

破棄されたオブジェクトにアクセスできません。オブジェクト名:「ターゲティング」。

それをTargetingクラスに追加しましたが、それでも機能しません。

        private void Targeting_FormClosing(Object sender, FormClosingEventArgs e)
            {
                this.Hide();
                e.Cancel = true;
            }

今は動作します。まったく同じように書く必要がありましたが、designerを使用しています:pありがとうございます:)

4

3 に答える 3

2

コードをボタンクリックイベントに入れます。

button1_Click(...)
{
   form_targeting = new Targeting();
   form_targeting.Show();
}

クローズフォームを終了

form_targeting.Close();
于 2012-04-30T11:10:31.263 に答える
1

フォームを閉じると、フォームが必要Disposeになります。FormClosingイベントのハンドラーを作成する必要があります。そのイベントハンドラーHideでフォームインスタンスを呼び出しe.Cancel = true、フォームが閉じられないように設定します。

于 2012-04-30T11:13:42.527 に答える
1

以下のコードは、からターゲティングのインスタンスを初期化していることを意味します。

 form_targeting = new Targeting();

次のコードを使用してフォームを表示form_targeting.Show();し、十字ボタンをクリックするか、何らかの方法でフォームを閉じます。最初の形式のform_targeting変数へのメモリ初期化が解放されます。

したがって、2回目に同じフォームを開こうとすると、エラーが発生します。

于 2012-04-30T11:16:09.797 に答える