Pourquoi faut-il appuyer deux fois sur les boutons pour fonctionner dans cette boîte de dialogue modale?

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

  •  05-07-2019
  •  | 
  •  

Question

J'ai ce code 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;
    }
}

Cela fonctionne bien, mais lorsque la boîte de dialogue s'ouvre, il me faut cliquer deux fois sur un bouton pour l'utiliser. Quelqu'un a-t-il une idée pourquoi?

Était-ce utile?

La solution

Vous devez définir this.DialogResult plutôt que btnxxx.DialogResult dans les gestionnaires de clics ou définir le btnxxx.DialogResult avant les gestionnaires.

DialogResult du formulaire est défini sur celui du bouton avant l'exécution de la méthode Click. Par conséquent, lors de la première exécution de l'événement, DialogResult du formulaire est laissé à None, mais la deuxième fois, il est défini sur le bouton (désormais défini) DialogResult. .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top