24 Ocak 2012 Salı

Windows Form Listbox'ına Auto Select Özelliği Kazandırma

Merhabalar, bu yazımda WindowsForm'daki Listbox kontrolüne combobox'larda olduğu gibi autoselect özelliği nasıl kazandırılacağından bahsedeceğim.
Autoselect özelliğinden kastettiğim listboxa focuslanılmış durumdayken, keypress'lere göre listedeki o harflerle başlayan ilk kaydın selected hale gelmesidir.

Sırasıyla adımlarımıza bakacak olursak :



1- Öncelikle formumuza bir adet stringbuilder değişkeni ekliyoruz.

StringBuilder currentSelection;


2- Daha sonra formumuza bir timer ekleyip, click eventine aşağıdaki kodu yazıyoruz :
private void timer1_Tick(object sender, EventArgs e) {

  currentSelection.Remove(0, currentSelection.Length);

  timer1.Stop();

}


3- Son olarak ListBox'ımızın KeyPress Eventine aşağıdaki kodu eklediğimizde listbox'ımız için autoselect özelliğimiz oluşmuş olacaktır.

private void listKonu_KeyPress(object sender, KeyPressEventArgs e) {
 
  timer1.Stop();
  timer1.Start();

  currentSelection.Append(e.KeyChar);

  int i =0;

  while(i<listKonu.Items.Count)
  {

    if(((DataRowView)ListBox.Items[i]).Row[listKonu.DisplayMember].ToString().ToUpper().StartsWith(currentSelection.ToString().ToUpper()))
    {

        ListBox.SelectedIndex = i;
        return;
    }

    System.
Math.Max(System.Threading.Interlocked.Increment(ref i),i-1);
    e.Handled = true;
 }
}



Bir dahaki yazıda görüşmek üzere ...




Hiç yorum yok:

Yorum Gönder