0

確認済みの問題: ブリック パターン ボタンが何らかの理由で終了ボタンのコードを実行しています

    private void brickToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //if (f2 != null) return;
        f2 = new Form2();
        f2.ShowDialog();
    }

    private void exitToolStripMenuItem_Click(object sender, EventArgs e)
    {
        myThread.Abort();
        Close();
    }

メイン ウィンドウ (パドルとレンガを含む) 用のスレッドとボールの動き用のスレッドを持つ、このブリック ブレーカー ゲームを作成しています。私のプログラムでは、ボタンをクリックして form2 を開くと、別のボタンのコードを実行しているため、プログラム全体が終了します。

プログラムを終了させずに form2 を開く別の方法はありますか? さまざまな種類の Show を試してみShowDialogましたが、その場合、form2 が 1/4 秒間表示されます。そして、プログラム全体が終了します。

これは、私の form1 コードへのリンクです。http://pastebin.com/FB19qd7e Form1 デザイナー コード : http://pastebin.com/RS8VZT5U

編集:出力はこれを示しています

タイプ 'System.Threading.ThreadAbortException' の初回例外が mscorlib.dll で発生しました タイプ 'System.Threading.ThreadAbortException' の例外が mscorlib.dll で発生しましたが、ユーザー コードで処理されませんでした

はい、終了、一時停止、レンガ (フォーム 2 を開く) の 3 つのボタンがあります。一時停止ボタンは意図したとおりに機能し、終了も同様です。ただし、ブリック ボタンをクリックすると、何らかの理由で終了ボタンから Thread.Abort が実行されます。終了ボタンのコードをコメントアウトすると、ブリック ボタンは問題なく動作します。

4

1 に答える 1

4

デザイナーのDeactivateイベントをイベント ハンドラーに接続したようです。Form1exitToolStripMenuItem_Click

this.Deactivate += new System.EventHandler(this.exitToolStripMenuItem_Click);

exitToolStripMenuItem_ClickのインスタンスがForm1フォーカスを失ったときに呼び出されます。Form2の既存のインスタンスの新しいインスタンスを表示するForm1と、アクティブなフォームではなくなり、イベント ハンドラへの呼び出しがトリガーされ、次に が呼び出されAbortます。

于 2013-04-07T14:15:03.230 に答える