2014-11-06 11 views
6

Ho creato un ComboBox con tre valori. Volevo che una finestra di messaggio si apre quando è selezionata alcuna voce così ho provato questo:Controllare se il valore della casella combinata è vuoto

if (comboBox1.SelectedItem == null) 
{ 
    MessageBox.Show("Please select a value"); 
    return; 
} 

Questo funziona bene, ma solo se clicco nel campo nella casella combinata. Quando non lo tocco, il programma inizierà senza finestra di messaggio. Cosa c'è che non va?

+0

Qual è l'evento che sta innescando questo codice? È in Form_Load o? – HABJAN

+0

No. L'ho inserito nel punto in cui si fa clic sul pulsante per eseguire il programma – uzi42tmp

risposta

11

if (string.IsNullOrEmpty(comboBox1.Text)) o if (comboBox1.SelectedIndex == -1)

1

Ithink questo è quello:

if(comboBox.SelectedItems==null) //or if(comboBox.SelectedItems==-1) 
    { 
     //show no item was selected from comboBox 
     } 

o

if(comboBox.SelectedItems.Count==0) 
{ 
//message no items selected 
} 
1

Il codice dovrebbe funzionare. Anche se devo anche impostare SelectedIndex così ......

if (this.comboBox1.SelectedItem == null || this.comboBox1.SelectedIndex == -1) 

vuoi dire "Quando io non toccarlo, il programma si avvia senza finestra di messaggio. Cosa c'è di sbagliato?" c'è qualche codice relativo a "toccarlo"

+0

Volevo dire che dovevo prima fare clic nel campo della casella. – uzi42tmp

+0

dove inizializzi la casella combinata ...? – liuzhidong

2

Usa

if (comboBox1.SelectedIndex == -1) 
{ 
    MessageBox.Show("Please select a value"); 
    return;   
} 

Nota: SelectedIndex sarà impostata su -1 quando SelectedValue è vuota solo quando FormattingEnabled è vero. Vedi here.

1

Controllare il valore di indice selezionato di discesa è pari -1

if (Comboboxid.SelectedIndex == -1){ 
    MessageBox.Show("Your message."); 
}