Perché i pulsanti devono essere premuti due volte per funzionare in questa finestra di dialogo modale?

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

  •  05-07-2019
  •  | 
  •  

Domanda

Ho questo codice 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;
    }
}

Funziona bene, ma quando si apre la finestra di dialogo mi richiede di fare clic due volte su un pulsante per usarlo. Qualcuno ha un'idea del perché?

È stato utile?

Soluzione

È necessario impostare this.DialogResult anziché btnxxx.DialogResult nei gestori dei clic oppure impostare btnxxx.DialogResult prima dei gestori.

Il DialogResult del modulo viene impostato sul pulsante prima dell'esecuzione del metodo Click, quindi la prima volta che si esegue l'evento il DialogResult del modulo viene lasciato su Nessuno, ma la seconda volta viene impostato sul DialogResult del pulsante (ora impostato) .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top