2013-01-14 30 views
5

Bazı düğmeler ve birleşik giriş kutusu içeren bir form yazıyorum. "Tamam" düğmesi varsayılan olarak devre dışıdır ve sadece gerçek bir değer (açılan kutunun adı değil) seçildikten sonra etkinleştirmek istiyorum.Bir ComboBox değeri seçili olup olmadığını kontrol edin

Seçilen değere nasıl erişileceğini ve bir değerin nasıl seçildiğini nasıl kontrol edeceğimi biliyorum - ancak bu ikisi yalnızca form kapatıldıktan sonra ("x" kullanarak veya "ok" düğmesini kullanarak yapılabilir) hangi devre dışı bırakılır).

Herhangi bir fikrin var mı?

Teşekkürler. combox kutusu seçilirse

+0

Benim için uzun zaman oldu, bu yüzden bir cevap yazmam. Ama UI nesnesinin sınırlandırılmış olduğu mülkte kontrol edemez misin? – Kevin

+0

'ComboBox.SelectedIndexChanged' Event'i kullanmayı denediniz mi? –

cevap

7

Belki de şu gibi:

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

Varsayılan olarak, bir combobox'ın seçili dizini -1'tir (başka bir dizin seçtikten sonra yeniden seçemeyeceğiniz birleşik girişin adıdır), böylece -1 değerinin olmadığını kontrol ederseniz, bir değerin seçildiğini bilirsiniz.

Ancak, kullandığım başka bir seçenek ise, her zaman bir değer seçmek istiyorsa DropDownStyle özelliğini kullanmak ve DropDownList olarak ayarlamaktır. Bu şekilde dizin 0 varsayılan olarak seçilir ve kullanıcı yalnızca listeden öğeler seçebilir ve başka bir şey olamaz.

0

Sen kontrol edebilirsiniz seçilen endeks değişti durumunda

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

sonra combobox seçilen endeks değişti olay

sizin InitializeComboBox sınıfına bu ekle kullanabilirsiniz

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

Bunun neden bir +1 olduğunu bilmiyorum, aslında bir şey seçildiğinde düğmeyi devre dışı bırakır. – Mitch

+0

@MitchTWC bir şey seçildiyse 'string.IsNullOrEmpty '' false 'olacaktır ve ben' string.IsNullOrEmpty' i kontrol edip true değerine dönecek ve buton etkinleştirilecektir. Neden devre dışı bırakıldığını düşündüğünüzden emin değilsiniz. –

+0

'u açıklayabilir miyim? Sadece örnek çalıştım, açılan kutumdan bir öğe seçtiğimde düğmeyi devre dışı bırakır. cbx.SelectedText boş bir dize döndürür. Kullanmanız gereken 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

Bu çalışma 'comboBox1.SelectedValue' çalışmıyor, combobox bir şey seçerken bile null değerini döndürür. – Mitch

+0

Cevabımı güncelledim. – spajce

+0

Bu, hiçbir şey seçilmediğinde düğmeyi etkinleştirir, yalnızca bir şey seçildiğinde düğmeyi etkinleştirmesi gerekir. : P DÜZENLEME: Haha ninja düzeninizi görüyorum;) – Mitch

İlgili konular