Görsel Programlama - ComboBox Kullanımı (C#)
ComboBox açılır menü bileşenidir. Görünüş olarak TextBox'a benzer ancak yanında küçük bir ok bulunur. Bu oka basıldığında içerisindeki elemanlar (item) seçilmek üzere listelenir.
İçerisindeki elemanlar Items listesinde bulunur. Bu listede yapılan değişiklikler ComboBox'a yansır.
Item Ekleme
ComboBox'a item eklemenin bir kaç yolu vardır. Bunlardan en basiti Items içindeki Add methodudur. Parametre olarak verilen string değer ya da bir değişken elemanlar arasına eklenir.
comboBox1.Items.Add("Merhaba Dünya"); string eleman = "Güle Güle Dünya"; comboBox1.Items.Add(eleman);
Örnek
Butona basıldığında TextBox içine yazılan metni ComboBox'a eleman olara ekleyen bir uygulama yapalım.
Tek yapmamız gereken Button'un click olayına gerekli eleman ekleme komutunu vermek.
private void button1_Click(object sender, EventArgs e) { comboBox1.Items.Add(textBox1.Text); }
Normalde Add methodu eklenen elemanı sıranın sonuna ekler. Eğer eklenilecek yeri belirlemek istersek Insert methodunu kullanabiliriz. İki parametre alır; ilki eklenilecek sıra numarası, ikincisi elemanın metni. Yeri gelmişken, tüm sıra numaraları (index) sıfırdan başlar. Yani ilk elemanın sıra numarası bir değil sıfırdır, bu yüzden ilk parametreyi sıfır verdik.
comboBox1.Items.Insert(0, textBox1.Text);
Elemanları tek tek eklemek yerine dizi halinde de eklemek isteyebilirsiniz. Bunun için AddRange Methodu kullanılır. Parametre olarak object dizisi alır.
string[] ogrenciler = { "Umut", "Onur", "Özgür" }; comboBox1.Items.AddRange(ogrenciler);
Item Silme
Elemanlardan birini silmek için eleman adını Items içindeki Remove methoduna verip çalıştırırız.
comboBox1.Items.Remove("Onur");
Aşağıdaki örnekte çalışma mantığını daha iyi anlayabilirsiniz. Önce üç isim ekleyip sonra bir tanesini sildik.
string[] ogrenciler = { "Umut", "Onur", "Özgür" }; comboBox1.Items.AddRange(ogrenciler); comboBox1.Items.Remove("Onur");
Silme işlemini sıra numarasına göre yapmak istersek RemoveAt methodunu kullanırız.
comboBox1.Items.RemoveAt(1);
Elemanları tek tek silmek yerine komple temizlemek isterseniz yine Items içindeki Clear methodu kullanılabilir.
comboBox1.Items.Clear();
Aşağıdaki örneği çalıştırırsanız göreceksiniz ki, önce eleman ekleyip sonra temizlediğimiz için ComboBox boş olacak.
string[] ogrenciler = { "Umut", "Onur", "Özgür" }; comboBox1.Items.AddRange(ogrenciler); comboBox1.Items.Clear();
Seçili Elemanı Öğrenme
ComboBox içinden seçilen elemanı öğrenmek için SelectedItem, sıra numarasını öğrenmek için SelectedIndex kullanılır.
Şimdi bir örnek yapacağız ama öncesinde forma bir ComboBox ekledikten sonra üzerine bir kere tıklayın. Sağ üst köşesinde küçük bir ok çıkacaktır ona tıklayıp açılan pencerede Edit Items... seçeneğini seçin. Karşınıza gelen pencerede eklemek istediğiniz elemanları sırasıyla alt alta yazın. Böylelikle teker teker kodlarla eklemek yerine program açıldığında elemanları eklenmiş olarak bulacaksınız.
ComboBox, Button, Label ve iki tane de TextBox kullanarak yukarıdaki formu tasarladıktan sonra ComboBox içine kafanıza göre bir kaç meslek ekleyin. Ardından butona çift tıklayıp click olayına girdikten sonra aşağıdaki iki satırı eklemeniz yeterli.
textBox1.Text = comboBox1.SelectedItem.ToString(); textBox2.Text = comboBox1.SelectedIndex.ToString();
Yukarıda SelectedItem ve SelectedIndex özelliklerini ToString methodunu kullanarak string tipine çevirdik çünkü TextBox'ın Text özelliği sadece string değer alabilir.
Düzeltme: Yukarıdaki butonun metni "ekle" değil "seç" olacak, unutmuşum.
ComboBox içindeki toplam eleman sayısını bulmak için Items içindeki Count özelliği kullanılır.
MessageBox.Show("Toplam eleman sayısı: " + comboBox1.Items.Count);