このモーダルダイアログで機能するためにボタンを2回押す必要があるのはなぜですか?
-
05-07-2019 - |
質問
このC#コードがあります:
public partial class Continue : Form
{
public Continue(string colourName)
{
InitializeComponent();
lblMessage.Text = String.Format("Do you wish to change the colour to {0}", colourName);
}
private void btnConfirm_Click(object sender, EventArgs e)
{
btnConfirm.DialogResult = DialogResult.OK;
}
private void btnCancel_Click(object sender, EventArgs e)
{
btnCancel.DialogResult = DialogResult.Cancel;
}
}
それはうまく機能しますが、ダイアログがポップアップするとき、ボタンを2回クリックして使用する必要があります。理由は誰にもわかりますか?
解決
クリックハンドラーで btnxxx.DialogResult
ではなく this.DialogResult
を設定するか、ハンドラーの前にbtnxxx.DialogResultを設定する必要があります。
フォームのDialogResultはClickメソッドが実行される前にボタンに設定されるため、最初にイベントが実行されるとフォームのDialogResultはNoneのままですが、2回目は(now-set)ボタンのDialogResultに設定されます。
所属していません StackOverflow