C# Textbox'ın AutoComplete Özelliği

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;

TextBox AutoCompleteMode Form

Ö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>

TextBox AutoCompleteSource List

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;

TextBox AutoCompleteCustomSource

TextBox AutoCompleteSource FileSystem

TextBox AutoCompleteSource History List

Ö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");
    }
}


İlgili diğer makaleler

blog comments powered by Disqus

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı