2013-01-14 6 views
5

Ich schreibe ein Formular, das einige Schaltflächen und ein Kombinationsfeld enthält. Die Schaltfläche "Ok" ist standardmäßig deaktiviert, und ich möchte sie erst aktivieren, nachdem ein tatsächlicher Wert (nicht der Name des Kombinationsfelds) ausgewählt wurde.Überprüfen Sie, ob ein ComboBox-Wert ausgewählt ist

Ich weiß, wie man auf den ausgewählten Wert zugreift und überprüft, ob ein Wert ausgewählt wurde - aber diese beiden können erst nach dem Schließen des Formulars (mit dem "x" oder dem "ok" Knopf) was deaktiviert ist).

Irgendwelche Ideen?

Danke.

+0

Es ist eine Weile für mich, also werde ich keine Antwort schreiben. Aber können Sie es nicht in der Eigenschaft überprüfen, an die das UI-Objekt gebunden ist? – Kevin

+0

Haben Sie versucht, 'ComboBox.SelectedIndexChanged' Event –

Antwort

7

Vielleicht so:

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

Standardmäßig ist der ausgewählte Index einer Combobox -1 (der Name der Combobox, den Sie nach dem Auswählen eines anderen Index nicht erneut auswählen können). Wenn Sie also überprüfen, dass es nicht -1 ist, wissen Sie, dass ein Wert ausgewählt wurde.

Eine andere Alternative, und die, die ich verwende, ist, wenn ich immer einen Wert gewählt werden soll, ist die DropDownStyle Eigenschaft zu verwenden und sie auf DropDownList einzustellen. Auf diese Weise ist Index 0 standardmäßig ausgewählt und der Benutzer kann nur Elemente aus der Liste und nichts anderes auswählen.

0

Sie können ComboBox ausgewählten Index geändert Ereignis

Fügen Sie diese auf Ihre InitializeComboBox Klasse verwenden

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

dann verändert Ereignis in ausgewählten Index können Sie überprüfen, ob combox Kästchens ist

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

Ich weiß nicht, warum dies ein +1 hatte, deaktiviert es tatsächlich die Schaltfläche, wenn etwas ausgewählt ist. – Mitch

+0

@MitchTWC Wenn etwas ausgewählt ist, wird 'string.IsNullOrEmpty'' 'false' und ich überprüfe'! String.IsNullOrEmpty', was wahr zurückgibt und die Schaltfläche ist aktiviert. Nicht sicher, warum Sie denken, dass es deaktiviert wird. Können Sie erklären, –

+0

Ich habe gerade Ihr Beispiel versucht, es deaktiviert meine Schaltfläche, wenn ich ein Element aus meiner Combobox auswählen. cbx.SelectedText gibt eine leere Zeichenfolge zurück. Sie müssen cbx.Text verwenden – 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

Dies funktioniert nicht 'comboBox1.SelectedValue' gibt null zurück, auch wenn Sie etwas aus der Combobox auswählen. – Mitch

+0

Ich habe meine Antwort aktualisiert. – spajce

+0

Dies aktiviert jetzt die Schaltfläche, wenn nichts ausgewählt ist, es muss die Schaltfläche nur aktivieren, wenn etwas ausgewählt ist. : P EDIT: Haha ich sehe deine Ninja bearbeiten;) – Mitch

Verwandte Themen