0

複数のプロジェクト ソリューションでは、2 つのフォームを持つスタートアップ WinForms プロジェクトがありDialogResult、子フォームがメイン フォームで実行を継続するように表示されるたびに期待していました。

var form2 = new ThisNameSpace.FormChild();
var dResult = form2.ShowDialog(this);

if(dResult == DialogResult.OK)
{
    // Do some work
}
else
{
    // Do other work
}

何らかの理由で、子フォームを別のプロジェクトに移動する必要がありました。メインのスタートアップ フォーム プロジェクトで新しいプロジェクトの dll を参照しましたが、ダイアログの結果を返すことができません。子フォームが閉じるFormClosingと、メイン フォームのイベントが発生しCloseReason.None、アプリケーションが終了します。どうすればこれを回避できますか?

4

1 に答える 1

1

FormClosing自分でイベントを発生させたり、ダイアログを閉じるためのカスタムコードを記述したりしないでください。

代わりにこれを行います:

  • 子形式の[OK]ボタンで、DialogResultプロパティをに設定しますOK
  • Accept Button子フォームで、 [OK]ボタンを指すようにsetプロパティを設定します

ウィンドウを閉じるために必要なのはこれだけで、正しいDialogResultが返されます。

'手動で'閉じる必要がある場合(モーダルダイアログ、つまりのShowDialog代わりにで開くダイアログではまれですShow)、Closeメソッドを使用します。

于 2012-09-19T09:44:32.570 に答える