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

  • J Medema

    J Medema

    11 EKİM 2006
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011