20 Mayıs 2011 Cuma

C# TextBox'a sadece sayı girişi(KeyPress(Tuş Bilgisi Okuma))

Merhaba arkdaşlar.Bugün C#'ta textbox'a sadece sayı girilmesini sağlayacak bir program yazacağız.Bu küçük ama çok kullanışlı bir fonksiyon birçok yerde karşımıza çıkacaktır.

C#' ta  klavye tuşlarını kontrol etme olayları vardır.Bunlar KeyDown olayı,KeyPress olayı,KeyUp olayı.Bu olaylara ulaşmak için yapmamız gereken şey çok basit.Üzerinde kontrol yapmak istediğiniz kontole tıklayın ve properties pencerisinde En üstte Şimşek iconlu Events bölümü var oraya tıklıyoruz.Ve daha sonra aşağısında bulunun KeyPress olayını buluyoruz ve karşısına gelip çift tıklıyoruz ve artık Keypress olayının içine kodlarımızı yazabiliriz.























Keyprese tıladıktan sonra içerisine kod yazacağımız events geliyor.












Bu olay arasına kodlarımı yazmaya başlıyoruz.

  private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
  if ((int)e.KeyChar >= 47 && (int)e.KeyChar <= 57)
            {

                e.Handled = false;//eğer 47 -58 arasındaysa tuşu yazdır.

            }

            else if ((int)e.KeyChar == 8)
            {

                e.Handled = false;//eğer basılan tuş backspace ise yazdır.

            }

            else
            {

                e.Handled = true;//bunların dışındaysa hiçbirisini yazdırma
          
        }
e.KeyChar fonksiyonu C#'ın kendi fonsiyonudur.Herhangi bir tuşun kodunu kontrol eder.Burada yaptığı görev belirtilen değerler arasında tuşu kabul edecek yada etmeyecek.Burada kodu 47 ile 57 kodları arası tuşları kabul ettik.Çünlü bu aralık sadece rakamları kapsıyor.Bizim istediğimiz texbox'a sadece rakam girebilmekti.

Eğer basılan tuş 47 ile 57 arasında ise e.Handled=false yani basılan tuşu kabul et diyoruz.
Burada atlamamamız gereken bir konu var.Sadece rakam yazdıracağız dedik ama bir de yanlış yazdığımız rakamı silmek var.Yani backspace tuşunuda kullanıma açmamız gerekiyor. onun içinde Kodu 8 olan karakteride kabul etmiş olduk.Onuda e.Handled=false olarak geri döndürdük.

Son olarak eğer bu tuşlar dışında başka bir tuşa basılmışsa bunu kabul etmiyoruz.Bunu yapmak içinde e.Handled=true olarak döndürdük.

Hiç yorum yok:

Yorum Gönder