13 Şubat 2018 Salı

Winforms ListBox Sınıfı

Giriş
Sütunları olmayan bir listedir. ListView gibi nesneleri gruplama yeteneği de yoktur. Satırları renkli çizmek için DrawItemEventArgs kullanılabilir.

DataSource Alanı
Örnek - array
Bir dizi şöyle gösterilir.
string[] lines = File.ReadAllLines("...");
listbox.DataSource = lines;
listbox.DataBind(); 
Örnek - List
Bir liste şöyle gösterilir.
List<string> strList = File.ReadAllLines("...").ToList();
listbox.DataSource = strList;
listbox.DataBind(); 
Eğer listbox içindeki ekleme çıkarmak işlemlerinin bellekteki listeye de yansımasını istersek şöyle yaparız.
var bindingList = new BindingList<string>(strList);
listbox.DataSource = bindingList;
listbox.DataBind();
DisplayMember Alanı
DataSource ile bağlanan nesnenin hangi alanının gösterileceğini belirtir.
Örnek
Şöyle yaparız.
var list = new List<...>(...)

listBox.DataSource = list;
listBox.DisplayMember = "name";
Örnek
Elimizde şöyle bir sınıf olsun.
public class FileItem
{
    public string Title { get; set; }
    public string Path { get; set; }
}
Şöyle yaparız
listBox1.DisplayMember = "Title";
listBox1.ValueMember = "Path";
Format Event'i
Gösterilecek string'i döndürür. Şöyle yaparız.
private void listBox1_Format(object sender, ListControlConvertEventArgs e)
{
  e.Value = (((string name, int ID))e.ListItem).name;
}
Items Alanı
Örnek
Şöyle yaparız.
listbox.Items.Add("string");
Örnek
Birden fazla nesne eklemek için şöyle yaparız.
listBox.Items.AddRange(new object[] { 0.5, 1.0, 2.0, 3.0 });
Örnek
Nesneleri dolaşmak için şöyle yaparız.
foreach (string s in listBox.Items)
{...}
SelectedIndex Alanı
Eğer bir satır seçili değilde -1 değerine sahiptir. Eğer seçili ise != -1 veya >=0 olarak kontrol edilir. Şöyle yaparız.
if(listBox1.SelectedIndex == -1){
  MessageBox.Show("Please select an item!");
}
Ya da şöyle yaparız.
if(listBox1.SelectedIndex >= 0){...}
-1 değerini atayarak seçilmiş nesneyi iptal edebiliriz.
listBox1.SelectedIndex = -1;
SelectedItem Alanı
Nesne seçili ise null değildir.
if (listBox1.SelectedItem != null) {...}
SelectedItems Alanı
Örnek
Şöyle yaparız.
var selectedItems = listBox.SelectedItems.Cast<FileItem>();
Örnek
Bir listeden diğerine satırları şöyle taşırız.
if (listBox1.SelectedItem != null)
{
  while (listBox1.SelectedItems.Count > 0)
  {
    listBox2.Items.Add(listBox1.SelectedItem);
    listBox1.Items.Remove(listBox1.SelectedItem);
  }
}

Hiç yorum yok:

Yorum Gönder