0

私が質問しようとしていることは、現実世界で必要とされていますが、簡単にするために、問題をこれに要約しました。

  • C# Windows フォーム アプリケーション プロジェクトを作成する
  • フォームにテキストボックスとボタンを追加します。
  • テキスト ボックスに Leave イベントを追加します。
  • ボタンに Click イベントを追加します。

このコードで

    private void textBox1_Leave(object sender, EventArgs e) {
        button1.Dispose();
    }

    private void button1_Click(object sender, EventArgs e) {
        MessageBox.Show("in button 1");
    }

プロジェクトを実行し、カーソルをテキスト ボックスに置きます。ボタンをクリックして終了します。

テキストボックスを離れると、ボタンが Disposed になりますが、ボタンの Click イベントは、処理されるのを待っているテキストボックスの Leave イベントの後ろに座っています。しかし、テキスト ボックスがなくなったため、ObjectDisposedException が発生します。

だから、....問題は、ボタンを安全に破棄できるように、キューに入れられたイベントをどのように削除するかです。

4

0 に答える 0