2013-01-14 16 views
5

Sto scrivendo un modulo che include alcuni pulsanti e una casella combinata. Il pulsante "Ok" è disabilitato per impostazione predefinita e desidero attivarlo solo dopo aver selezionato un valore reale (non il nome della casella combinata).Verificare se è selezionato un valore ComboBox

So come accedere al valore selezionato e come verificare se un valore è stato selezionato, ma questi due possono essere eseguiti solo dopo che il modulo è chiuso (utilizzando la "x" o utilizzando il pulsante "ok" - che è disabilitato).

Qualche idea?

Grazie.

+0

È stato un po 'per me, quindi non scriverò una risposta. Ma non puoi controllarlo nella proprietà a cui è limitato l'oggetto UI? – Kevin

+0

Hai provato a utilizzare l'evento 'ComboBox.SelectedIndexChanged' –

risposta

7

Forse così:

private void comboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox.SelectedIndex > -1) 
     { 
      buttonOK.Enabled = true; 
     } 
    } 

Per impostazione predefinita, l'indice selezionato di una casella combinata è -1 (il nome della casella combinata, che non è possibile selezionare nuovamente dopo aver scelto un altro indice), quindi se si controlla che non sia -1, si sa che è stato selezionato un valore.

Tuttavia un'altra alternativa e quella che uso è se voglio sempre che un valore sia selezionato è quello di utilizzare la proprietà DropDownStyle e impostarla su DropDownList. In questo modo l'indice 0 è selezionato per impostazione predefinita e l'utente può solo selezionare elementi dall'elenco e nient'altro.

0

È possibile utilizzare ComboBox selezionato indice cambiato evento

Aggiungi questo alla classe InitializeComboBox

this.ComboBox1.SelectedIndexChanged += 
      new System.EventHandler(ComboBox1_SelectedIndexChanged); 

poi nell'indice evento cambiato selezionato è possibile controllare se è selezionata la casella combox

private void ComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    ComboBox cbx= (ComboBox) sender; 
    Button1.Enabled = !string.IsNullOrEmpty(cbx.SelectedItem.ToString()); 
} 
+0

Non so perché questo ha un +1, in realtà disabilita il pulsante quando qualcosa è selezionato. – Mitch

+0

@MitchTWC se qualcosa è selezionato 'string.IsNullOrEmpty' sarà' false', e sto controllando '! String.IsNullOrEmpty' che restituirà true e il pulsante è abilitato. Non sono sicuro del motivo per cui pensi che sarà disabilitato. Puoi spiegare –

+0

Ho appena provato il tuo esempio, disabilita il mio pulsante quando seleziono un oggetto dalla mia casella combinata. cbx.SelectedText restituisce una stringa vuota. È necessario utilizzare cbx.Text – Mitch

0
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedIndex == -1) 
      button1.Enabled = false; 
     else 
      button1.Enabled = true; 

     //or 
     //button1.Enabled = comboBox1.SelectedIndex == -1; 
    } 
+0

Questo non funziona 'comboBox1.SelectedValue' restituisce null anche quando si seleziona qualcosa dalla casella combinata. – Mitch

+0

ho aggiornato la mia risposta. – spajce

+0

Questo ora abilita il pulsante quando non è selezionato nulla, è necessario abilitare il pulsante solo quando qualcosa è selezionato. : P EDIT: Haha vedo la tua modifica ninja;) – Mitch

Problemi correlati