編集:この方法は実際にうまく機能し、後で解決策を見つけた. オーバーロードされた ShowDialog() メソッドに正しい呼び出しを追加しました (正確にはオーバーロードでもオーバーライドでもありませんが、まったく同じように機能します。私の新しい質問は一番下のものです。
3 つのボタンのいずれかをクリックするフォームがあります。返された結果の列挙型を定義しました。電話をかけたい:
MyFormResults res = MyForm.ShowDialog();
次のコードを使用して、新しい ShowDialog メソッドを追加できます。
public new MyFormResults ShowDialog()
{
//Show modal dialog
base.ShowDialog(); //This works and somehow I missed this
return myResult; //Form level variable (read on)
}
ボタンがクリックされたときの結果にフォーム レベルの変数を設定します。
MyFormResults myResult;
private void btn1_click(object sender, EventArgs e)
{
myResult = MyFormsResults.Result1;
this.DialogResult = DialogResult.OK; //Do I need this for the original ShowDialog() call?
this.Close(); //Should I close the dialog here or in my new ShowDialog() function?
}
//Same as above for the other results
私が見逃しているのは、ダイアログ (モーダル) を表示して結果を返すコードだけです。機能がないbase.ShowDialog()
ので、どうすればいいですか?
編集:「base.ShowDialog()」があり、機能します。これは私の新しい質問です:
また、これはすべてを行うための最良の方法ですか?なぜですか?
ありがとう。