Einschränkung der WPF -Textboxeingabe auf numerische Werte und einen Dezimalpunkt
Benötigen Sie ein WPF -Textfeld, das nur Zahlen und einen Dezimalpunkt akzeptiert, ohne Anzeichen zuzulassen? Während eine NumericUpDown
Kontrolle wie eine Lösung scheint, passt sie möglicherweise nicht zum Design Ihrer Anwendung. Ein flexiblerer Ansatz verwendet die Ereignisse PreviewTextInput
und DataObject.Pasting
.
Fügen Sie das Ereignis PreviewTextInput
Ihrer Textbox -Definition wie folgt hinzu: <TextBox PreviewTextInput="PreviewTextInput"></TextBox>
.
Der Ereignishandler prüft, ob die Eingabe unter Verwendung eines regulären Ausdrucks gültig ist. Dieses Beispiel erlaubt nur Ziffern, Perioden () und Bindestriche (-): PreviewTextInput
<code class="language-csharp">private static readonly Regex _regex = new Regex("[^0-9.-]+"); // Regex for disallowed characters private static bool IsTextAllowed(string text) { return !_regex.IsMatch(text); } private void PreviewTextInput(object sender, TextCompositionEventArgs e) { e.Handled = !IsTextAllowed(e.Text); }</code>
: DataObject.Pasting
<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>
Das obige ist der detaillierte Inhalt vonWie kann ich die Eingabe in einem WPF -Textfeld auf nur numerische Werte und einen Dezimalpunkt beschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!