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