Почему кнопки нужно нажимать дважды, чтобы работать в этом модальном диалоге? - PullRequest
0 голосов
/ 27 ноября 2009

У меня есть этот код 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;
    }
}

Работает нормально, но когда всплывает диалоговое окно, мне нужно дважды нажать на кнопку, чтобы использовать его. У кого-нибудь есть идеи почему?

1 Ответ

6 голосов
/ 27 ноября 2009

Вам нужно установить this.DialogResult вместо btnxxx.DialogResult в обработчиках Click или установить btnxxx.DialogResult перед обработчиками.

DialogResult формы устанавливается на значение кнопки до запуска метода Click, поэтому при первом запуске события DialogResult формы остается равным None, но во второй раз он устанавливается на DialogResult (теперь установленной) кнопки .

...