restreindre l'entrée de la zone de texte WPF aux valeurs numériques et un point décimal
Besoin d'une zone de texte WPF qui accepte uniquement les nombres et un point décimal, sans autoriser les signes? Bien qu'un contrôle NumericUpDown
puisse sembler une solution, il peut ne pas s'adapter à la conception de votre application. Une approche plus flexible utilise les événements PreviewTextInput
et DataObject.Pasting
.
Ajoutez l'événement PreviewTextInput
à votre définition de zone de texte comme ceci: <TextBox PreviewTextInput="PreviewTextInput"></TextBox>
.
Le gestionnaire d'événements PreviewTextInput
vérifie si l'entrée est valide à l'aide d'une expression régulière. Cet exemple ne permet que des chiffres, des périodes (.) Et des tirets (-):
<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>
Pour éviter le collage de données non valides, gérez l'événement 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>
Ces méthodes garantissent que votre zone de texte accepte uniquement les entrées numériques, fournissant une solution propre et efficace adaptée à la conception de votre application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!