C# TextBox Kontrolü ve Kullanımı
Bir TextBox denetimi, bir formdaki kullanıcı girdisini kabul eder. Bu makalede, Windows Formlarında bir TextBox denetiminin tasarım zamanında ve çalışma zamanında nasıl oluşturulacağını tartışacağım. Ondan sonra, TextBox denetimi için mevcut olan çeşitli özellikleri ve yöntemleri tartışmaya devam edeceğim.
Bir textbox nesnesi, bir formdaki metni görüntülemek veya bir C# programı çalışırken kullanıcı girişi elde etmek için kullanılır. Bir textbox nesnesine, bir kullanıcı veri yazabilir veya panodan kontrolün içine yapıştırabilir.
C# TextBox Oluşturma
Tasarım zamanında Form tasarımcısı kullanarak veya çalışma zamanında koddaki TextBox sınıfını kullanarak (dinamik olarak da bilinir) bir TextBox denetimi oluşturabiliriz.
Tasarım zamanında bir TextBox denetimi oluşturmak için, bir TextBox denetimini Araç Kutusu’ndan Visual Studio’daki bir Form’a sürükleyip bırakmanız yeterlidir. Bir TextBox’ı Form üzerinde sürükleyip bıraktıktan sonra, TextBox aşağıdaki şekle benzer. Bir TextBox Formdayken, fareyi kullanarak taşıyabilir ve yeniden boyutlandırabilir ve özelliklerini ve olaylarını ayarlayabilirsiniz.
C# Dinamik TextBox Oluşturma
Çalışma zamanında bir TextBox denetimi oluşturmak yalnızca bir TextBox sınıfı örneği oluşturma, özelliklerini ayarlama ve Form denetimlerine TextBox sınıfı ekleme işlemidir.
Dinamik bir TextBox oluşturmak için ilk adım bir TextBox sınıfı örneği oluşturmaktır. Aşağıdaki kod parçacığını bir TextBox denetim nesnesi oluşturur.
1 2 3 4 | // TextBox nesnesi Oluşturma TextBox textBox1= new TextBox(); |
Bir sonraki adımda, bir TextBox denetiminin özelliklerini ayarlayabilirsiniz. Aşağıdaki kod parçası, bir TextBox öğesinin arka plan rengini, ön plan rengini, Metin, Ad ve Yazı Tipi özelliklerini ayarlar.
1 2 3 4 5 6 7 8 | // yazı ve arkaplan rengini ayarlama ayrıca yazı türü ve isim gibi özellikeri de ayarlandı textBox1.BackColor = Color.Azure; textBox1.ForeColor = Color.Firebrick; textBox1.Text = "Merhaba, Mesajı buraya yazın."; textBox1.Name = "dinamikTxt"; textBox1.Font = new Font("Georgia", 16); |
Bir TextBox denetimi özellikleriyle hazır olduğunda, bir sonraki adım TextBox denetimini forma eklemektir. Bunu yapmak için Form.Controls.Add yöntemini kullanıyoruz. Aşağıdaki kod parçası, geçerli Forma bir TextBox denetimi ekler.
1 2 3 | Controls.Add(dinamikTxt); |
C# TextBox Değer Yazma ve Değer Okuma
Bir TextBox kontrolünde bir metni görüntülemek için, şöyle bir kod yazmanız gerekir.
1 2 3 | textBox1.Text = "https://www.yazilimkodlama.com"; |
Bir TextBox kontrolünden girilen değeri bu şekilde bir değişkene aktarabilirsiniz.
1 2 3 4 | string degisken; degisken = textBox1.Text; |
C# TextBox Özellikleri
Bir TextBox denetimini bir Forma yerleştirdikten, değer okuma ve yazma işlemlerini öğrendikten sonra sonra, bir sonraki adım özellikleri ayarlamaktır. Aşağıdaki özelliklerle textbox nesnesini biçimlendirebilir yada kişiselleştirebilirsiniz. C# TextBox Biçimlendirme işlemleri içinde hizalama, boyut ayarlama, renk değiştirme gibi bir çok özellik mevcuttur.
Özellikleri ayarlamanın en kolay yolu, Özellikler Penceresindendir. F4 tuşuna basarak Özellikler penceresini açabilir veya bir kontrolü sağ tıklayıp Özellikler menüsü öğesini seçebilirsiniz. Özellikler penceresi aşağıdaki şekle benziyor.
Aşağıda başlık olarak verilen özellikleri properties panelinde statik yada açıklamanın hemen altındaki koddan dinamik(çalışırken) olarak ayarlamak mümkündür.
Konum, Yükseklik, Genişlik ve Boyut
Location özelliği, bir formdaki TextBox başlangıç konumunu belirten bir nokta alır. Size özelliği, kontrolün boyutunu belirtir. Boyut özelliği yerine Witdth ve Height özelliğini de kullanabiliriz. Aşağıdaki kod parçası , bir TextBox denetiminin Konum, Genişlik ve Yükseklik özelliklerini ayarlar.
1 2 3 4 5 | textBox1.Location = new Point(20, 150); textBox1.Height = 40; textBox1.Width = 300; |
Multiline TextBox / C# TextBox Multiline Kullanımı
Varsayılan olarak, bir TextBox denetimi girişi yalnızca tek bir satırda kabul eder. Çok satırlı yapmak için, Multiline özelliğini true değerine ayarlamanız gerekir. Varsayılan olarak, Multiline özelliği false olarak gelir.
Bir TextBox denetimini Araç Kutusu’ndan Form’a sürükleyip bıraktığınızda, bir TextBox denetiminin yüksekliğini değiştiremezsiniz.
Ancak bir TextBox kontrolü seçip Görevler tutamacını tıklayıp MultiLine CheckBox’ı işaretlerseniz, bir TextBox’ta yükseklik yeniden boyutlandırma tutma tutamaçlarının bulunduğunu göreceksiniz ve bir denetimin yüksekliğini yeniden boyutlandırabilirsiniz.
Textbox BackColor ve ForeColor / C# TextBox Arkaplan ve Yazı Rengi Değiştirme
BackColor ve ForeColor özellikleri, sırasıyla bir TextBox öğesinin arka planını ve ön plan rengini ayarlamak için kullanılır. Özellikler penceresinde bu özelliklere tıklarsanız, Renk İletişim Kutusu açılır.
Alternatif olarak, çalışma zamanında arka plan ve ön plan renklerini ayarlayabilirsiniz. Aşağıdaki kod parçacığı BackColor ve ForeColor özelliklerini ayarlar.
1 2 3 4 | textBox1.BackColor = Color.Blue; textBox1.ForeColor = Color.White; |
Textbox BorderStyle
BorderStyle özelliğini kullanarak da bir TextBox öğesinin kenarlık stilini ayarlayabilirsiniz. BorderStyle özelliği, üç değeri olan bir BorderStyle numaralandırmasıyla temsil edilir. Bunlar None, FixedSingle ve fixed3d seçenekleridir.
1 2 3 | textBox1.BorderStyle = BorderStyle.Fixed3D; |
Name
Ad özelliği, bir TextBox denetiminin benzersiz bir adını temsil eder. Koddaki kontrole erişmek için kullanılır. Aşağıdaki kod pasajı bir TextBox denetiminin adını ve metnini ayarlar ve alır.
1 2 3 4 | textBox1.Name = "DinamikTextBox"; string isim = textBox1.Name; |
Text, TextAlign ve TextLength
Bir TextBox öğesinin Text özelliği, bir TextBox denetiminin geçerli metnini gösterir. TextAlign özelliği, Left, Center veya Right olabilecek metin hizalamasını gösterir. TextLength özelliği, bir TextBox içeriğinin uzunluğunu döndürür.
Aşağıdaki kod parçası , Text ve TextAlign özelliklerini ayarlar ve bir TextBox denetiminin boyutunu alır. Aşağıdaki örnekte C# TextBox yazıyı ortalama işlemi de gerçekleştirilmiştir.
1 2 3 4 5 | textBox1.Text = "Merhaba ben textbox nesnesiyim"; textBox1.TextAlign = HorizontalAlignment.Center; int boyut = textBox1.TextLength; |
Metin Ekle
Bir TextBox’a metin eklemenin bir yolu, basitçe Text özelliğini geçerli metne ve bunun gibi bir şey eklemek isteyeceğiniz yeni metne ayarlamaktır.
1 2 3 | textBox1.Text + = "Eklenen metin"; |
TextBox aynı şeyi yapmak için ApendText yöntemine de sahiptir. AppendText yöntemi, bir TextBox öğesinin sonuna metin ekler. Aşağıdaki kod parçacığını, textBox1 içeriğine metin eklemek için AppendText yöntemini kullanır.
1 2 3 | textBox1.AppendText ("Eklenmiş metin"); |
AcceptsReturn ve AcceptsTab
Çok satırlı bir TextBox denetiminde, yeni bir satır oluşturmak için CTRL + ENTER tuşlarına basmanız gerekir. AcceptsReturn özelliği, sadece ENTER tuşuna basarak TextBox kontrolünü yeni satıra taşımak için ayarlar. Varsayılan olarak, bir TextBox denetiminin AcceptsReturn özelliği false olarak gelir.
1 2 3 4 | // ENTER tuşunu kabul eder textbox1.AcceptsReturn = true; |
Bir TextBox denetimi multiline ayarlanmışsa, AcceptsTab özelliği TextBox denetiminin SEKME tuşunu kabul etmesi için kullanılır. Bu özellik ayarlanmazsa, SEKME tuşuna basmak, yalnızca bir formdaki bir sonraki denetime gider. Varsayılan olarak, bir TextBox denetiminin AcceptsTab özellik değeri false olarak gelir.
1 2 3 4 | // SEKME tuşunu kabul eder textBox1.AcceptsTab = true; |
WordWrap
WordWrap özelliği true ise, gerekirse TextBox denetimindeki metin otomatik olarak bir sonraki satıra kaydırılır. Eğer . Bu özellik true değerine ayarlanırsa, ScrollBars özellik ayarından bağımsız olarak yatay kaydırma çubukları görüntülenmez.
1 2 3 4 | // Wordwrap textBox1.WordWrap = true; |
ScrollBars
Çok Satırlı bir TextBox denetimi kaydırma çubuklarına sahip olabilir. TextBox denetiminin ScrollBars özelliği, bir denetim üzerindeki kaydırma çubuklarını göstermek için kullanılır. ScrollBars özelliği, dört değere sahip bir ScrollBars numaralandırmasıyla gösterilir – Both, Vertical, Horizontal, ve None.
Aşağıdaki kod pasajı, hem dikey hem de yatay kaydırma çubuklarının bir TextBox denetiminde etkin olmasını sağlar ve kaydırma işlemi bir TextBox denetiminde gerektiğinde görünür.
1 2 3 | textBox1.ScrollBars = ScrollBars.Both; |
Font
Font özelliği, bir TextBox denetiminin yazı tipini temsil eder. Özellikler penceresinde Font özelliğini tıklarsanız Yazı Tipi adı, boyutu ve diğer yazı tipi seçeneklerini görürsünüz. Aşağıdaki kod parçası, çalışma zamanında Font özelliğini ayarlar.
1 2 3 | textBox1.Font = new Font ("Georgia", 16); |
PasswordChar / C# TextBox Şifre Gizleme
PasswordChar özelliği, bir şifre girişi için kullanmanız gerektiğinde bir TextBox’a maskeleme uygulamak ve şimdi hangi şifreyi okunabilir yapmak için kullanılır. Örneğin, şifre karakterleri için bir yıldız (*) yerleştirebilirsiniz.
Aşağıdaki kod parçacığını, bir TextBox içinde girilen herhangi bir karakter olarak bir dolar ($) sembolü ayarlar.
1 2 3 | textBox1.PasswordChar = '$'; |
UseSystemPasswordChar
UseSystemPasswordChar özelliği, varsayılan sistem şifresini tam olarak kullanmak için kullanılır UseSystemPasswordChar öğesi true olarak ayarlanırsa, varsayılan sistem şifresi karakteri kullanılır ve PasswordChar tarafından ayarlanan herhangi bir karakter yoksayılır.
CharacterCasing
TextBox öğesinin CharacterCasing özelliği, bir TextBox içindeki metnin büyüklüğünü ayarlar, Üç değeri vardır -Upper, Lower, ve Normal.
dynamicTextBox.CharacterCasing = CharacterCasing.Upper;
TextBox İçeriklerini Oku
TextBox denetiminin içeriğini okumanın en basit yolu Text özelliğini kullanmaktır. Yukarıda açıklanmasına rağmen tekrar bir özetlemek istedim. Aşağıdaki kod parçacığını, bir textbox değerini okuyun string türünde bir değişkende saklar.
1 2 3 | string okunan= textBox1.Text; |
Lines / C# TextBox Satır Satır Okuma
Çok satırlı bir TextBox içinde, TextBox içeriği birden çok satırla ayrılırsa ve bir TextBox satırının içeriğini satır satır okumak istiyorsanız, TextBox öğesinin Lines özelliğini kullanabilirsiniz. Lines özelliği, döndürülen dizinin her öğesinin bir çizgi olduğu bir dize dizisi döndürür.
Aşağıdaki kod parçacığını bir TextBox içeriği satır satır okur.
1 2 3 4 5 6 7 | string [] textBoxLines = dynamicTextBox.Lines; foreach (string line in textBoxLines) { MessageBox.Show(line); } |
MaxLength / Maksimum Uzunluk
MaxLength özelliğini ayarlayarak bir TextBox denetimindeki karakter sayısını kısıtlayabilirsiniz. Aşağıdaki kod parçası, bir TextBox öğesinin maksimum uzunluğunu 50 karaktere ayarlar.
1 2 3 | textBox1.MaxLength = 50; |
ReadOnly / Sadece Oku
ReadOnly özelliğini true değerine ayarlayarak bir TextBox denetimini salt okunur (düzenlenemez) yapabilirsiniz. Aşağıdaki kod pasajı, ReadOnly özelliğini true değerine ayarlar.
1 2 3 | textBox1.ReadOnly = true; |
ShortcutsEnabled / Kısayolları Etkinleştirme ve Devre Dışı Bırakma
TextBox öğesinin ShortcutsEnabled özelliği, kısayolları etkinleştirmek veya devre dışı bırakmak için kullanılır. Varsayılan olarak, kısayollar etkindir. Aşağıdaki kod parçacığını bir TextBox kısayolları devre dışı bırakır.
1 2 3 | textBox1.ShortcutsEnabled = false; |
ShortcutsEnabled özelliği aşağıdaki kısayol tuş kombinasyonlarına uygulanır:
- CTRL+Z
- CTRL+E
- CTRL+C
- CTRL+Y
- CTRL+X
- CTRL+BACKSPACE
- CTRL+V
- CTRL+DELETE
- CTRL+A
- SHIFT+DELETE
- CTRL+L
- SHIFT+INSERT
- CTRL+R
SelectedText / C# TextBox’ta Seçim Yapma
SelectedText özelliği, seçili metni bir TextBox denetiminde döndürür.
1 2 3 | string secim = textBox1.SelectedText; |
Bir TextBox içinde seçilen metni almak ve ayarlamak için SelectionStart ve SelectionLength özelliklerini de kullanabilirsiniz. SelectionStart özelliği, seçilen metnin başlangıç dizinini ve SelectionLength özelliği, başlangıç karakterinden sonra seçilecek karakter sayısını temsil eder. Aşağıdaki kod parçası, bir TextBox’ta seçimi ayarlar.
1 2 3 4 | textBox1.SelectionStart = 10; textBox1.SelectionLength = 20; |
Clear / C# TextBox Temizleme
Clear yöntemi bir TextBox içeriğini kaldırır. Aşağıdaki kod parçacığını, bir TextBox içeriğini temizlemek için Temizle yöntemini kullanır.
1 2 3 | textBox1.Clear(); |
SelectAll ve DeselectAll
TextBox sınıfı, bir TextBox denetiminin tüm metnini seçmek ve seçimi kaldırmak için SelectAll ve DeselectAll yöntemlerini sağlar. Aşağıdaki kod parçası, SelectAll ve DeselectAll yöntemlerinin nasıl kullanılacağını gösterir. Seçim için textBox nesnesinde metin olmalı.
1 2 3 | if (textBox1.TextLength > 0) textBox1.SelectAll(); |
Seçili olan metnin seçimini kaldırmak için kullanılır.
1 2 3 | if (textBox1.TextLength > 0) textBox1.DeselectAll(); |
TextBox’ta Cut, Copy, Paste, Undo Operasyonları / C# TextBox Kopyala Yapıştır
TextBox sınıfı, pano işlemlerini kesmek, kopyalamak, yapıştırmak ve geri almak için Kes, Kopyala, Yapıştır ve Geri Al yöntemleri sağlar. Aşağıdaki kod parçaso Kes, Kopyala, Yapıştır ve Geri Al yöntemlerinin nasıl kullanılacağını gösterir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | privatevoid cutToolStripMenuItem_Click(object sender, EventArgs e) { if (textBox1.SelectionLength > 0) textBox1.Cut(); } privatevoid copyToolStripMenuItem_Click(object sender, EventArgs e) { if (textBox1.SelectionLength > 0) textBox1.Copy(); } privatevoid pasteToolStripMenuItem_Click(object sender, EventArgs e) { if (Clipboard.GetDataObject().GetDataPresent(DataFormats.Text)) { textBox1.Paste(); } } privatevoid undoToolStripMenuItem_Click(object sender, EventArgs e) { if (textBox1.CanUndo) { textBox1.Undo(); textBox1.ClearUndo(); } } |
C# TextBox Olayları
TextBox nesneleri bir çok klavye, fare, window ve form olaylarını desteklemektedir. Aşağıdaki şekilden tüm olaylara ulaşabilirsiniz. Yazını devamında sık kullanılan olaylara örnekler verilerek devam edilecektir.
C# Keydown Kullanımı/ C# TextBox Karakter Kontrolü
KeyDown olayını kullanarak kullanıcı tarafından hangi tuşa basıldığını yakalayabilirsiniz.
Aşağıdaki örnekte kullanıcının textboxta enter tuşuna basıp basmadığını öğrenebilirsiniz.
Yada kullanıcının hangi tuşa bastığını öğrenmek istiyorsanız. e.KeyCode yada e.KeyData ile basılan tuşu öğrenebilirsiniz.
C# KeyPress Kullanımı
Bu olay, tuşa basıldığında ve sonra bırakıldığında karakter tuşları için düzenlenir. Bu olay, karakter olmayan anahtarlar için de yükseltilen KeyDown ve KeyUp öğelerinin aksine karakter olmayan anahtarlarla ortaya çıkmaz.
C# TextChanged Kullanımı
Kullanıcı girişi veya Text özelliğini yeni bir değere ayarladığında TextChanged olayını çalışır.
Aşağıdaki örnekte textBox1 nesnesinde her harfe basınca textBox1 değerini label1 nesnesinde gösterecektir.
C# TextBox focus Kullanımı
Aşağıdaki kod örneği,focus kullanımını gösterir. Örnekte, bir olay işleyicisi GotFocus olayının oluşumunu bildirir. Bu rapor, olayın ne zaman gerçekleştiğini öğrenmenize yardımcı olur ve hata ayıklama konusunda size yardımcı olabilir.
Örnek kodu çalıştırmak için, Button veya ComboBox gibi Denetimi’nden miras alan bir tür örneği içeren bir projeye uygulayabilirsiniz. Ben burada textbox nesnesine uyguladım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private void textBox1_GotFocus(Object sender, EventArgs e) { label1.Text = "textbox1'e girildi"; } private void textBox1_LostFocus(Object sender, EventArgs e) { label1.Text = "textbox1'den ayrıldı"; } public Form1() { InitializeComponent(); textBox1.GotFocus += textBox1_GotFocus; textBox1.LostFocus += textBox1_LostFocus; } |
Hocam görmemiş olabilirim ama ben formu açtığımda textbox un içinde şeffaf bir yazı olsun istiyorum yazı yazınca gidicek.
Direk kullanabileceğiniz bir özellik yok. Kod yazarak çözebilirsiniz.
TextBox Enter ve Leave olaylarını kullanarak aşağıdaki kodları her bir textBox için oluşturmanız gerekiyor. Bununla ilgili bir yazı veya video hazırlayıp linkini paylaşırım.
private void textBox1_Enter(object sender, EventArgs e)
{
if(textBox1.Text==”Adınızı Girin”)
{
textBox1.Text = “”;
textBox1.ForeColor = Color.Black;
}
}
private void textBox1_Leave(object sender, EventArgs e)
{
if (textBox1.Text == “”)
{
textBox1.Text = “Adınızı Girin”;
textBox1.ForeColor = Color.Silver;
}
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = “Adınızı Girin”;
textBox1.ForeColor = Color.Silver;
}
hocam cidden efsane bi yazı olmuş. insanın baktıkça bakası geliyor. emeğiniz için çok teşekkürler.
Emeğinize sağlık.Harika.