SORU
20 Ocak 2009, Salı


Nasıl sadece sayı kabul eden bir textbox yapabilirim?

Sadece tamsayı değerleri kabul etmek istediğim bir textbox denetimi içeren windows Form uygulaması var. Geçmişte Basışı olayı aşırı ve sadece belirtimi uymadı hangi karakter kaldırarak bu tür bir doğrulama yaptım. MaskedTextBox kontrolü baktım ama belki de normal bir ifade ile iş veya diğer denetimleri değerlerine bağlı olabilir, bu daha genel bir çözüm istiyorum.

İdeal olarak, bu sayısal olmayan bir karakter basarak hiçbir sonuç veya hemen geçersiz karakter hakkında geribildirim ile kullanıcıya sunmak ya da böyle davranır.

CEVAP
20 Ocak 2009, Salı


İki seçenek var:

  1. NumericUpDown kullanın. NumericUpDown güzel olan sizin için filtreleme yapar. Tabii ki aynı zamanda kullanıcılar artırmak için klavyedeki yukarı ve aşağı okları vur ve geçerli değer azaltma olanağı sağlar.

  2. Uygun klavye olayları ama sayısal giriş her şeyi önlemek için bir tanıtıcı. Standart bir TextBox üzerinde bu iki olay işleyicileri ile başarı elde ettik:

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) &&
            (e.KeyChar != '.'))
        {
                e.Handled = true;
        }
    
        // only allow one decimal point
        if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
        {
            e.Handled = true;
        }
    }
    

Eğer TextBox ondalık izin gerekmez eğer '.' (4 ** daha sonraki kontrol için hesabı kaldırabilirsiniz. Ayrıca eğer TextBox negatif değerlere izin vermek gerekir ise '-' için bir onay ekleyebilirsiniz.

Eğer basamak sayısı için Kullanıcı sınırlamak istiyorsanız, kullanın: textBox1.MaxLength = 2; // this will allow the user to enter only 2 digits

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jcortes187

    jcortes187

    24 Mart 2006
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • PC Learning Zone - Computer Training

    PC Learning

    8 EYLÜL 2006