Fethi Polat 1
Fethi Polat
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Scarlet 1
Scarlet
xranzei 1
xranzei
Hikaye Ekle

.NET Framework / Wpf Autocomplete Textbox

  • Konuyu başlatan Konuyu başlatan Alpi1s
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 2
  • Görüntüleme Görüntüleme 655

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Uygulamalarda bir şey ararken bazen ne arayacağımızı tam olarak bilmeyiz ya da aradığımız şeyin tüm adını hatırlayamayız. Bu nedenle artık sistemler kullanıcılara kolaylık sağlamak amacıyla, kullanıcı arama yapmak için bir şeyler yazarken o yazdığı textle başlayan ya da o texti içeren verileri, yazdığımız controlün altında listeler. Bunun en basti örneğini google.com.tr sitesinde görebiliriz.

Sizlere autocomplete denen bu özelliği wpf textboxta nasıl uygulayacağımızı anlatmaya çalışacağız.
Xaml
47590f16-98ae-406c-a721-35ce1721974cxaml.png


[TD="class: number"]1[/TD]
[TD="class: content"]Usercontrolümüzün içinde bir tane stackpanel ve stackpanelin içinde de bir tane textbox ve popup controlleri[/TD]


[TD="class: number"]2[/TD]
[TD="class: content"]bulunmaktadır. Textbox controlünü arama yapacağımız texti yazmak için pop up ve pop up controlün içindeki[/TD]


[TD="class: number"]3[/TD]
[TD="class: content"]listbox controlünü de arama sonuçlarını listelemek için kullanacağız.[/TD]



Cs
466ac651-d773-46a7-b256-2077402b243fcs1.png

Kullanıcının autocompletetextbox usercontrolü içinde yer alan textbox kontrolünde yaptığı her değişikliği dışarıya bilgilendirmek için TextChangedEventHandler tipinde bir event tanımladık. ItemsSource propertisi ise usercontrolün kullanıldığı yerde arama sonucunda elde edilen sonuçları autocompletetextbox usercontrolü içinde yer alan listbox kontrolde listelenmesini sağlamak amacıyla public olarak belirtiyoruz.
bd6ad751-4ca2-4b52-8353-bb0cd3e9baebcs2.png

ListBox_MouseLeftButtonUp event handlerı kullanıcının, arama sonuçlarının listelendiği listboxtan seçtiği itemın textinin, textboxa yazılmasını sağlamak için implement edilmiştir. Kullanıcının listeden seçtiği item direk olarak ListBoxItem tipinde olmadğı için, bu tipteki değişkeni bulana kadar seçilen itemın parentından başlayarak yukarıya doğru aramaya devam ediyoruz.
Usercontrolün load eventinde popup controlün boyutlarını ayarladıktan sonra, autocompletetextbox controlün yer aldığı windowu bulup, bu window kullanıcı tarafından mousela taşındığı zaman popup controlü kapatmak için LocationChanged eventini dinliyoruz.
c9d6f046-08d7-44a5-b968-7820382b8eeccs3.png

Usercontrolün textboxında yapılan değişiklikleri TextBox_TextChanged eventhanlerı ile TextChangedEventHandler event değişkeni ile dışarıya açıp, dışarda ilgili mantığın işletilmesini sağlıyoruz.
SetTextBoxText fonksiyonu içinde ise textbox kontrolünün textini kod içinden değiştiriyoruz. Kod içinden textbox kontrolün textini değiştirmeden önce textbox kontrolün TextChanged eventine düşmemek için önce detach olup, textte değişiklik yaptıktan sonra tekrar eventa attach oluyoruz.
Mainwindow cs
0d8d5d04-3789-4cb5-815e-1fe69e971df0mainwindow_cs.png



Uygulamada windowa bir tane autocompletetextbox controlümüzden koyuyoruz ve bu controlümüzün TextChangedEventHandler eventini dinleyerek iş mantığını gerçekleştiriyoruz. Bu iş mantığının içinde gördüğünüz gibi ülkemizdeki şehirlerin adlarının tutulduğu bir listeden, kullanıcının girdiği texte bakıp arama yaparak dönen sonucu autocompletetextbox controlümüzün ItemsSource porpertisine atayarak sonuçların autocompletetextbox controlümüzün listboxında görüntülenmesini sağlıyoruz.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst