SORU
12 AĞUSTOS 2009, ÇARŞAMBA


Nasıl sadece WPF sayısal girişi kabul etmek için bir TextBox alabilirim?

Basamak ve ondalık, ama hiçbir iz kabul ediyorum.

Baktım örnekler kullanarak NumericUpDown kontrolü için Win ve this sample of a NumericUpDown custom control from Microsoft. Ama çok farklı geliyor gibi NumericUpDown (tarafından desteklenen WPF ya da değil gidiş için işlevselliği sağlamak istiyorum. Benim app tasarlanmıştır ve bu şekilde, aklı başında olan hiç kimse ile okları uğraşmak istiyorum. Herhangi bir pratik anlamda, benim uygulama kapsamında yapmıyorlar.

Basit bir yöntem için standart bir WPF TextBox tek istediğim karakter kabul yapmak için arıyorum. Bu mümkün mü? Pratik mi?

ÇOK teşekkürler!

CEVAP
12 AĞUSTOS 2009, ÇARŞAMBA


Önizleme metin girişi bir olay Ekle. Öyle gibi: <TextBox PreviewTextInput="PreviewTextInput" />.

Sonra içindeki e ayarlayın.Eğer metin izin verilmez, eğer ele değil. e.Handled = !IsTextAllowed(e.Text);

İsTextAllowed basit bir düzenli ifade eğer yazdığınız ne izin gerektiğini görmek için kullanıyorum. Benim durumumda ben sadece sayılar, nokta ve tire izin vermek istiyor.

private static bool IsTextAllowed(string text)
{
    Regex regex = new Regex("[^0-9.-] "); //regex that matches disallowed text
    return !regex.IsMatch(text);
}

DataObject kadar yanlış veri kanca yapıştırma önlemek istiyorsanız.here görüldüğü gibi yapıştırma olayı DataObject.Pasting="TextBoxPasting" (kod) bölümünden:

// Use the DataObject.Pasting Handler 
private void TextBoxPasting(object sender, DataObjectPastingEventArgs e)
{
    if (e.DataObject.GetDataPresent(typeof(String)))
    {
        String text = (String)e.DataObject.GetData(typeof(String));
        if (!IsTextAllowed(text))
        {
            e.CancelCommand();
        }
    }
    else
    {
        e.CancelCommand();
    }
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Doug Bernards

    Doug Bernard

    7 Kasım 2007
  • hydejiaqi

    hydejiaqi

    12 Mart 2008
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008