在WPF TextBox中僅接受數字輸入
WPF應用程序經常需要限制TextBox只接受數字輸入,無論是整數還是小數,這對於各種應用都是必要的。
使用PreviewTextInput和IsTextAllowed
為了實現此功能,可以使用PreviewTextInput
事件:
<code class="language-xml"><TextBox PreviewTextInput="PreviewTextInput"></TextBox></code>
在PreviewTextInput
事件處理程序中,可以使用IsTextAllowed
方法控制是否允許用戶的輸入:
<code class="language-csharp">private static readonly Regex _regex = new Regex("[^0-9.-]+"); //匹配不允许的文本的正则表达式 private static bool IsTextAllowed(string text) { return !_regex.IsMatch(text); } private void PreviewTextInput(object sender, TextCompositionEventArgs e) { if (!IsTextAllowed(e.Text)) { e.Handled = true; } }</code>
此方法使用正則表達式來驗證輸入,以滿足應用程序的需求。
阻止數據對象粘貼
為了進一步限制輸入,可以使用DataObject.Pasting
事件:
<code class="language-xml"><TextBox DataObject.Pasting="TextBoxPasting"></TextBox></code>
<code class="language-csharp">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(); } }</code>
這確保了粘貼到TextBox中的數據也符合所需的輸入條件。 注意,這裡將RoutedEventArgs
更正為TextCompositionEventArgs
,更符合PreviewTextInput
事件的參數類型。 對於DataObject.Pasting
事件,代碼保持不變。
以上是如何限制WPF文本框以僅接受數字輸入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!