Genellikle web uygulamalarında gördüğümüz metin kutularının otomatik tamamlama özelliğini Windows Masaüstü uygulamalarımıza da ekleyebiliriz.
Yapmamız gereken, otomatik tamamlama özelliği vermek istediğimiz Textbox‘ın birkaç özelliğini ayarlamak;
AutoCompleteMode : Varsayılan olarak None değerini içerir Append, yazılan harflere uyan ilk kelimenin kalanını textbox’a ekler ve seçili hale getirir Suggest, aşağı açılan listeyi gösterir SuggestAppend, hem aşağı açılan listeyi gösterir, hem de yazılan harflere uyan ilk kelimenin kalanını textbox’a ekler ve seçili hale getirir
AutoCompleteSource : Varsayılan olarak None değerini içerir FileSystem, FileSystemDirectories, HistoryList, RecentlyUsedList, AllSystemSources, AllUrl, CustomSource değerlerinden birini içerebilir
AutoCompleteCustomSource : AutoCompleteSource özelliği CustomSource olarak atanmışsa AutoCompleteCustomSource özelliği string dizisi olarak listeyi tutar
Önce aşağıdaki ekran görüntüsünde form oluşturalım;
Öncelikle formumuzun yüklenme olayında (Form_Load Event) Kaynak açılır listesine (ComboBox), otomatik tamamlama kaynaklarının listesini ekleyelim;
cmbKaynak.Items.Add(AutoCompleteSource.CustomSource); cmbKaynak.Items.Add(AutoCompleteSource.FileSystem); cmbKaynak.Items.Add(AutoCompleteSource.FileSystemDirectories); cmbKaynak.Items.Add(AutoCompleteSource.HistoryList); cmbKaynak.Items.Add(AutoCompleteSource.RecentlyUsedList); cmbKaynak.Items.Add(AutoCompleteSource.AllSystemSources); cmbKaynak.Items.Add(AutoCompleteSource.AllUrl);</pre>
Daha sonra, TextBox‘ın AutoCompleteMode ve AutoCompleteCustomSource özelliklerine değer atamaları yapalım;
txtWebSitesi.AutoCompleteMode = AutoCompleteMode.SuggestAppend; txtWebSitesi.AutoCompleteCustomSource.AddRange(new string[] { "http://www.enginpolat.com", "http://www.karalamalar.net", "http://www.cebirci.com", "http://www.kadirgunay.com" }); cmbKaynak.SelectedIndex = 0;
Son olarak, Kaynak combobox‘ının seçili eleman değişti olayında (SelectedIndexChanged Event) textbox‘ın AutoCompleteSource özelliğini değiştiriyoruz;
txtWebSitesi.AutoCompleteSource = (AutoCompleteSource)cmbKaynak.SelectedItem;
Örnek uygulamanın tüm kaynak kodu;
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Windows.Forms; using System.Diagnostics; public partial class frmMain : Form { public frmMain() { InitializeComponent(); } private void frmMain_Load(object sender, EventArgs e) { cmbKaynak.Items.Add(AutoCompleteSource.CustomSource); cmbKaynak.Items.Add(AutoCompleteSource.FileSystem); cmbKaynak.Items.Add(AutoCompleteSource.FileSystemDirectories); cmbKaynak.Items.Add(AutoCompleteSource.HistoryList); cmbKaynak.Items.Add(AutoCompleteSource.RecentlyUsedList); cmbKaynak.Items.Add(AutoCompleteSource.AllSystemSources); cmbKaynak.Items.Add(AutoCompleteSource.AllUrl); txtWebSitesi.AutoCompleteMode = AutoCompleteMode.SuggestAppend; txtWebSitesi.AutoCompleteCustomSource.AddRange(new string[] { "http://www.enginpolat.com", "http://www.durgut.com", "http://www.karalamalar.net", "http://www.kadirgunay.com", "http://www.microsoft.com", "http://www.bilgeadam.com", "http://www.ntvmsnbc.com", "http://www.arcelik.com" }); cmbKaynak.SelectedIndex = 0; } private void cmbKaynak_SelectedIndexChanged(object sender, EventArgs e) { txtWebSitesi.AutoCompleteSource = (AutoCompleteSource)cmbKaynak.SelectedItem; } private void lblenginpolatcom_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { Process.Start("http://www.enginpolat.com"); } }
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484