C Textbox Sayı Girişini Engelleme

C TextBox’ta Sayı Girişini Engelleme

Bir C# uygulamasında, kullanıcıların belirli bir TextBox kontrolüne sayı girmesini engellemek isteyebileceğiniz durumlar olabilir. Bu, yalnızca metin girişine izin verilen alanlar oluşturmak veya kullanıcıların yanlışlıkla sayısal değerler girmesini önlemek için gerekli olabilir.

Bu makalede, C# TextBox’ta sayı girişini engellemenin çeşitli yollarını inceleyeceğiz.

1. KeyPress Olayını Kullanma

KeyPress olayı, bir TextBox kontrolüne bir tuşa basıldığında tetiklenir. Bu olayı, sayısal tuşlara basıldığında girişin engellenmesi için kullanabiliriz.

c#
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// Sayısal tuşlara basılıp basılmadığını kontrol et
if (char.IsDigit(e.KeyChar))
{
// Sayısal tuşa basıldıysa, giriş engelle
e.Handled = true;
}
}

2. InputType Özelliğini Kullanma

InputType özelliği, bir TextBox kontrolünün kabul ettiği giriş türünü belirler. Sayı girişini engellemek için InputType özelliğini “Text” olarak ayarlayabiliriz.

c#
textBox1.InputType = InputType.Text;

3. MaskedTextBox Kontrolünü Kullanma

MaskedTextBox kontrolü, kullanıcı girişini belirli bir formata göre kısıtlamak için özel olarak tasarlanmıştır. Sayı girişini engellemek için MaskedTextBox kontrolünün Mask özelliğini kullanabiliriz.

c#
maskedTextBox1.Mask = "LLLLLLLLLLLLLLLLLLLL";

4. RegEx Kullanma

RegEx (Düzenli İfade), metin dizelerini eşleştirmek ve doğrulamak için kullanılan güçlü bir araçtır. Sayı girişini engellemek için TextBox’ın TextChanged olayında bir RegEx kullanabiliriz.

“`c#
private void textBox1_TextChanged(object sender, EventArgs e)
{
// Sayısal karakterleri içeren bir RegEx oluştur
Regex regex = new Regex(“[0-9]”);

// TextBox metninde sayısal karakterler olup olmadığını kontrol et
if (regex.IsMatch(textBox1.Text))
{
    // Sayısal karakterler varsa, metni temizle
    textBox1.Text = "";
}

}
“`

5. Özel Bir Sınıf Kullanma

Yukarıdaki yöntemlere ek olarak, sayı girişini engellemek için özel bir sınıf da oluşturabiliriz. Bu sınıf, TextBox’ın TextChanged olayını geçersiz kılabilir ve sayısal karakterler içeren metni engellemek için özel mantık uygulayabilir.

“`c#
public class NumberInputValidator : TextBox
{
public override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e);

    // Sayısal karakterleri içeren bir RegEx oluştur
    Regex regex = new Regex("[0-9]");

    // TextBox metninde sayısal karakterler olup olmadığını kontrol et
    if (regex.IsMatch(this.Text))
    {
        // Sayısal karakterler varsa, metni temizle
        this.Text = "";
    }
}

}
“`

İlgili Kaynaklar


Yayımlandı