C# TextBox’a Sadece Sayı Girme

Merhabalar C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde TextBox içine sadece sayı girilmesini sağlayacağız. Yani kullanıcı TextBox içine sadece 1’den 9’a kadar olan sayıları girebilecek fakat onun haricinde başka birşey yazamayacak. Hadi başlayalım !
Öncelikle tabiki Visual Studio aracılığı ile bi tane Windows Forms projesi oluşturup formumuzun herhangi bir yerine bi tane TextBox ekleyelim. Ve bu TextBox’ın KeyPress eventini oluşturup kodlara geçiş yapalım. KeyPress eventini oluşturmak için ilgili TextBox’ı seçip Properties ekranından Events bölümüne geçerek KeyPress alanına çift tıklayalım. Forma eklediğimiz TextBox’ın adının textBox1 olduğunu varsayarsak şöyle bir fonksiyon oluşturulması gerekiyor;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e){ }
Şimdi işimiz bu fonksiyon ile olacak. Çünkü TextBox içine veri girilmesi demek KeyPress eventinin tetiklenmesi demek olduğu için, bu event üzerinden istediğimiz işlemi yapabiliriz.
Bu KeyPress eventi içerisinde bulunan KeyPressEventArgs nesnesi içinde bulunan KeyChar özelliği (propertisi) ile basılan tuşun ne olduğunu öğrenebiliyoruz ve eğer sayıya basılmadı ise basmayı engelle diyebiliriz. Bu kadar konuşma yeter, hadi kod yazalım 🙂
e.Handled = !char.isDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
Bu yazdığımız kod satırını açıklamak gerekirse; e.KeyChar propertisi ile basılan tuşun ne olduğunu öğrendik, char.IsDigit() ve char.IsControl() fonksiyonları da basılan tuş bi karakter yani char tipinde değer olduğu için arka planda ASCII kodlarını karşılaştırıp basılan tuş sayısal bi ifade ise true, değilse false döndürmektedir. e.Handled propertisi ile de engelleme işlemini yapmış oluyoruz. Yani kodun sağ tarafından true gelirse engelleme yapılacak, false gelirse engelleme yapılmayacaktır, yani tam olarak istediğimiz işlem yapılacaktır.
Evet bu dersimizde bu kadardı, yazdığımız kodları daha toplu olması için aşağıya bırakıyorum;
textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !char.isDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
}
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.