Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
105 lines (76 sloc) 5.31 KB
layout title date author comments category tags
post
C# Textbox'ın AutoComplete Özelliği
2010-08-23 21:31
engin.polat
true
C#
allsystemsources
allurl
append
autocompletecustomsource
autocompletemode
autocompletesource
combobox
CustomSource
FileSystem
FileSystemDirectories
HistoryList
None
RecentlyUsedList
Suggest
SuggestAppend
textbox

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);

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