2013-04-24 157 views
4

我只想知道如何創建一個文本框,只允許用戶鍵入數字,一個允許數字和一個完整的停止,一個只允許用戶鍵入字母?如何創建只接受數字的文本框和只接受WPF中的字母的文本框?

我使用Windows窗體驗證碼:

private void YearText_KeyPress(object sender, KeyPressEventArgs e) //Textbox only accepts numbers 
{ 
    char ch = e.KeyChar; 
    if (!Char.IsDigit(ch) && ch != 8 && ch != 13) 
    { 
     e.Handled = true; 
    } 
} 

private void NameText_KeyPress(object sender, KeyPressEventArgs e) //Textbox only accepts letters 
{ 
    if (!char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar) && !char.IsWhiteSpace(e.KeyChar)) 
     e.Handled = true; 
} 

private void ResellPriceText_KeyPress(object sender, KeyPressEventArgs e) //Textbox that allows only numbers and fullstops 
{ 
    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; 
    } 
} 

但我很快就發現了這個不能與WPF來完成。我並不喜歡諸如粘貼字母/數字的能力。

回答

3

這可以在WPF中完成,實際上你甚至可以用非常類似的基於事件處理程序的代碼來完成,但是,不要這樣做 - 這是一種糟糕的用戶體驗。這將防止用戶在意外地包含周圍空間時複製和粘貼,並防止輸入科學數字,例如100e3。

而不是使用驗證(在修剪的輸入),並防止用戶繼續,如果驗證失敗。

+0

我第二次驗證事實後的想法。我從來沒有發現有必要限制可以輸入的內容,只限於可以提交的內容。 – Logarr 2013-04-25 21:17:00

+0

僅輸入a-f和0-9的MAC地址非常有用。允許輸入超出範圍的字符的MAC地址,並且使輸入無效似乎對我來說很麻煩。所以我想這取決於用例。 – 2013-08-21 11:36:33