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

  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • circuschina

    circuschina

    16 Mart 2007
  • KIT KAT

    KIT KAT

    3 EKİM 2005