İ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.
2- Oluşturduğumuz projenin içine TextBox öğesi ekleyelim.
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.
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;
}