2017-04-02 47 views
-1

我正在開發一個UWP應用程序,我需要確保用戶不能輸入任何東西,除了最大長度爲8個字符的正整數,然後是decimal還有兩個digits。 的Examples可能是如何防止用戶在文本框中輸入除正數以外的任何其他內容

12345.50, 
123456.50, 
123.23 

我要實現這些上TextBox。我想,以確保該Shift鍵不能在鍵盤上被使用,並且數字必須從Numeric鍵盤(both)

進入我寫了這個代碼,但它接受特殊字符和shift關鍵。

讓我們假設只有一個輸入的模式,這是僅通過keyboard

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
     { 
      if ((!char.IsControl(Convert.ToChar(e.Key)) && !char.IsDigit(Convert.ToChar(e.Key)) && 
     (Convert.ToChar(e.Key) != '.'))) 
      { 
       e.Handled = true; 
      } 
     } 

回答

0

你的假設就是記一個真實世界的場景。您不能通過鍵盤阻止用戶輸入數據:語音,墨跡,IME,自動建議等將全部在文本框中輸入文本,而不會通過KeyDown事件。

,以確保文本框的唯一方法只能得到是唯一收到您的有效格式後:在TextChanging,框TextChanged,引發LostFocus,提交按鈕輸入等

由於命中驗收的要求是自包含TextChanging可能是最好的地方:確保文本被允許和刪除以及無效的字符。注意不要過於嚴格以至於用戶無法獲得有效的輸入:不要拒絕「。」。在用戶可以輸入這些數字之前,後面沒有兩位數字。

另一個選擇(如果兩個字段相互依賴的話會更好)是讓用戶做出無效輸入,但告訴他們:留下不好的輸入,但將其標記爲無效並且不接受表單直到它已經固定。

而且看看在UWP社區工具包TextBoxMask酒店在http://docs.uwpcommunitytoolkit.com/en/master/controls/TextBoxMask/

+0

我讀過你關於MSDN上發佈,以及類似的問題的答案。事實上,這個UWP應用程序將只使用操作系統提供的鍵盤輸入 – Apoorv

相關問題