c# wpf textbox içerikleri

İyi günler

Karşılaştığım sıkıntı , WPF Projemde oluşturduğum Textbox ‘ ın istediğim kısıtlamaların ayarlanması.

Bir örnekle açıklayalım.

1- TESTPROJE diye yeni bir proje oluşturalım.

wpf_1i

 

2- Oluşturduğumuz projenin içine TextBox öğesi ekleyelim.

wpf_2

 

3-Oluşturduğumuz Texbox ‘ın  PreviewTextInput(Metin girişini dinlememizi sağlar. PreviewTextInput; konuşma, el yazısı ve diğer giriş aygıtlarını da  dinleyebilir .) event sınıfı ile ilişkilendirelim.

wpf_3

 

4- Textbox ‘ın sadece numara yazmasını istiyorsak oluşturduğumuz ctlOrnekTxt_PreviewTextInput event(Olay) ‘in içine yazıyoruz

Namespace:   System.Text.RegularExpressions
Assembly:  System (in System.dll)

using System.Text.RegularExpressions;

a .  Rakam

private void ctlOrnekTxt_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
Regex regex = new Regex(“[^0-9]+”); // Girilebilecek rakam aralığı
e.Handled = regex.IsMatch(e.Text); // Girilen karakterin okunması ve eşleşip ekrana basılmasını sağlar.

/// Doğru yazımı

e.Handled = new Regex(@”[^0-9]+”).IsMatch(e.Text);
}

b. Ondalıklı(Decimal) Sayı  (“.” , “,”) kullanıma göre ayarlanmıştır

private void ctlOrnekTxt_PreviewTextInput(object sender, TextCompositionEventArgs e)

{

Regex regex = new Regex(@”(\+|-)?[0-9][0-9]*(\,[0-9]*)?(\.[0-9]*)?”);
e.Handled = !regex.IsMatch((sender as TextBox).Text.Insert((sender as TextBox).SelectionStart, e.Text));

}

c. Sadece harf

private void ctlOrnekTxt_PreviewTextInput(object sender, TextCompositionEventArgs e)

{

e.Handled = new Regex(@”^[0-9\\s]+”).IsMatch(e.Text);

}

d.Sadece harf ve istenilen karaktere izin verilmesi. (alternetif çözüm olarak)

 private void ctlOrnekTxt_PreviewTextInput(object sender, KeyEventArgs e)
 {
 e.Handled = new Regex(@"^[0-9,!\\s]+").IsMatch(e.Text);
 }

  Alternatif çözüm
 private void ctlOrnekTxt_PreviewTextInput(object sender, KeyEventArgs e)
 { 
 e.Handled = !isCharKey(e.Key) && !isPermisionKey(e.Key);
 }

 private bool isCharKey(Key inKey)
 {
 if (inKey < Key.A || inKey > Key.Oem8 )
 {
 
 if (inKey < Key.NumPad0 || inKey > Key.NumPad9)
 {
 return false;
 }
 }
 return true;
 }
 private bool isPermisionKey(Key inKey)
 {
 return inKey == Key.Delete || inKey == Key.Back 
     || inKey == Key.Tab || inKey ==Key.Space;
 }


wpf_4