Почему кнопки нужно нажимать дважды, чтобы работать в этом модальном диалоге?

StackOverflow https://stackoverflow.com/questions/1808336

  •  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;
    }
}

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top