2013-01-14 37 views
5

Piszę formularz zawierający niektóre przyciski i pole kombi. Przycisk "Ok" jest domyślnie wyłączony i chcę go włączyć dopiero po wybraniu rzeczywistej wartości (nie nazwy pola kombi).Sprawdź, czy wybrano wartość ComboBox

W jaki sposób uzyskać dostęp do wybranej wartości i jak sprawdzić, czy została wybrana wartość - ale te dwie mogą być wykonane dopiero po zamknięciu formularza (za pomocą "x" lub za pomocą przycisku "ok" - który jest wyłączony).

Wszelkie pomysły?

Dzięki.

+0

Minęło trochę czasu, więc nie napiszę odpowiedzi. Ale czy nie możesz go sprawdzić w obiekcie, do którego jest ograniczony obiekt UI? – Kevin

+0

Czy próbowałeś użyć 'ComboBox.SelectedIndexChanged' Event –

Odpowiedz

7

Być może w ten sposób:

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

Domyślnie wybrany indeks listy combobox to -1 (nazwa combobox, której nie można ponownie wybrać po wybraniu innego indeksu), więc jeśli sprawdzisz, że nie jest -1, to wiesz, że wybrano wartość.

Jednak inną alternatywą i tą, której używam, jest to, że jeśli zawsze chcę, aby wybrano wartość, należy użyć właściwości DropDownStyle i ustawić ją na DropDownList. W ten sposób domyślnie wybrany jest indeks 0, a użytkownik może wybierać tylko elementy z listy i nic więcej.

0

Można użyć combobox wybrany wskaźnik zmienił zdarzenie

Dodaj to do swojej klasy InitializeComboBox

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

następnie w wybranym indeksie wydarzenie zmieniło można sprawdzić, czy jest zaznaczone pole Combox

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

Nie wiem, dlaczego miał +1, to faktycznie wyłącza przycisk, gdy coś jest zaznaczone. – Mitch

+0

@MitchTWC, jeśli coś jest zaznaczone, 'string.IsNullOrEmpty' będzie" fałszem ", i sprawdzam'! String.IsNullOrEmpty', które zwróci true i przycisk jest włączony. Nie wiesz, dlaczego uważasz, że zostanie wyłączony. Czy mógłbyś wytłumaczyć –

+0

Po prostu próbowałem twój przykład, wyłącza mój przycisk, gdy wybieram element z mojego combobox. cbx.SelectedText zwraca pusty ciąg znaków. Musisz użyć polecenia 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

Nie działa to polecenie 'comboBox1.SelectedValue' zwraca wartość null, nawet jeśli wybrano coś z pola wyboru combobox. – Mitch

+0

zaktualizowałem moją odpowiedź. – spajce

+0

Włącza teraz przycisk, gdy nic nie jest zaznaczone, musi włączyć przycisk tylko wtedy, gdy coś jest zaznaczone. : P EDYCJA: Haha Widzę twoją edycję ninja;) – Mitch

Powiązane problemy