以下のように、プログラムで戻り値を設定するフォームにボタンを作成しました。まず、イベントハンドラpsudocodeが続き、ダイアログの結果が返されます。ダイアログ結果戻り値を設定する
ユーザーインターフェイスでボタンのリターン動作、つまりダイアログ結果の動作を設定できるデフォルトのプロパティがあります。私のフルコードでは、このボタンのリターンが設定または変更されている場所はわかりません。
コードの実行中にbuttonSaveSet_Clickイベントハンドラが初めて使用されたときにテスト(デバッグモードで実行)すると、「設定」ボタンをクリックしたにもかかわらず返されるダイアログ結果値が「キャンセル」になります。しかし、2回目に同じボタンを押して関数を実行すると、ダイアログの結果は「はい」として返されます。
ダイアログの結果が変更されている場所があり、その場所を誤った場所に設定しているようです。
psudo code
private void buttonSaveSet_Click(object sender , EventArgs e)
{
setChars = new setChars();
//set the dr to yes.
buttonSaveSet.DialogResult = DialogResult.Yes;
// set the charCount
// set the rowCount
if (conditional statement is true)
{
//return values;
}
else
{
//return nothing;
}
Close();
}
リターン場所:あなたはdecribingている行動に基づいて
try
{
DialogResult dResult = setValPopup.ShowDialog();
SetChars sc = setValPopup.setChars;
int max;
if (dResult == DialogResult.Yes)
{
if (sc.set == true)
{
//do other work
}
}
}
ボタンDialogResultは、OnClickが後で実行される前にform.DialogResultにコピーされます。フォームを閉じる前にイベントでそれを変更するのは遅いです。 form.DialogResultをbutton.DialogResultではなく設定してください。 – Ralf