Bonjour à tous,
J’ai deux sacrés problèmes à soumettre à votre sagacité
Problème 1
Je suis en train de créer un Custom Control de champ numérique en C#/WPF et je n’arrive pas à contraindre le champ pour ne saisir que des valeurs numériques (décimaux compris, c’est-à-dire avec la virgule ou le point) et si possible en autorisant la saisie sous forme d’écriture scientifique (Ex : 1.12E-8).
Je souhaite :
- Si possible éviter à chaque KeyDown une vérification avec un Regex
- Éviter l’utilisation de bibliothèques externes
Une vérification de ce genre fonctionne pour le pavé numérique :
1 | e.Key >= Key.NumPad0 && e.Key <= Key.NumPad9 |
Mais en ce qui concerne les touches numériques au dessus des touches alphabétiques, ça ce complique quand il s’agit de vérifier la disposition anglaise ou française car il faut prendre la touche shift en considération.
Problème 2
Est-il possible de formater le nombre (séparation de milliers…) tout en saisissant les nombres ? En utilisant les méthodes de formatages de nombres fournit avec la bibliothèque .NET on arrive à peu près à le faire, avec pas mal de souci et de bug, du genre il faut recalculer le nombre de décimales saisies par l’utilisateur pour le prendre en compte dans le NumberFormatInfo.NumberDecimalDigits
ainsi que des problèmes de curseur qui se remet au début du champ chaque fois que le textbox est formaté…
Avez-vous des solutions à me proposer ?
Merci d’avance !