texte girilen harf yada sayıyı engelleme

Kodla Büyü

hakanlı

Üye
Mesajlar
13
Arkadaşlar aşağıdaki kodları çalıştırdığımda üstteki harf engeli koyuyor, alttaki ise sayı engeli koyuyor. Ama ben bu kodların mantığını çözemedim. Bu satırların görevlerini anlatabilir misiniz, lütfen?

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Asc(e.KeyChar) <> 8 Then
e.Handled = Not IsNumeric(e.KeyChar)
End If
End Sub

Private Sub TextBox2_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox2.KeyPress
If Asc(e.KeyChar) <> 8 Then
e.Handled = IsNumeric(e.KeyChar)
End If
End Sub
 
char (8) sanırım backspace yani sola silme tuşu
1. sinde
eğer silme tuşuna basılmıyorsa
handled değişkenine numerik olmayan değerler aktarılıyor (numerik değilse true oluyor, yani hata var gibi)
Açıklama : "handled" deyimi hata veriyormuş gibi işlemin bitmesini sağlıyor.

2. sinde ise
eğer silme tuşuna basılmıyorsa
handled değişkenine numerik olan değerler aktarılıyor (numerik ise true oluyor, yani hata var gibi)
 
hocam öncelikle bu işlemler için textbox kullanıp kodlarla kontrol yapmak yerine masked textbox kullanmanız ve giriş maskesini belirtmeniz yeterlidir :wink: (http://www.gorselprogramlama.com/maskedtextbox-kullanimi-cnet-vbnet)

kodlara gelince ise farklı bir teknik kullanılmış. tuşa basılma olayındaki olay yakalayıcı nesnenin (e nesnesi) 'yakalandı' (handled) özelliğini eğer basılan tuş backspace değilse ve nümerik olup olmadığına göre değiştiriyor. yani duruma göre tuş yakalansa da 'yakalanmadı'ya çeviriyor veya kabul ediyor. bu sayede textbox'a değer yazılıyor veya hiç yazılmıyor. sanırım performans kaybı yaşamamak veya en aza indirmek için bu şekilde düşük seviye bir yöntem izlenmiş. ama dediğim gibi bunlara gerek yok maskedtextbox işinizi görecektir
 
Çok teşekkür ederim volkankey ve parhelion arkadaşlar, en azından zihnimde bir fikir oluştu, parhelion hocam maskedtextbox özelliği sadece harf engelinde kullanılıyor, sayı engeli yapmıyor.
 
BBNET
Geri
Üst