Bonjour,
j'ai un masked text box, dans lequel je voudrais que la saisie soit un prix.
mais je ne sais pas quel masque appliqué.
si je met un masque du genre 00000
l'utilisateur peut faire un prix du genre 55_5_5
merci
Version imprimable
Bonjour,
j'ai un masked text box, dans lequel je voudrais que la saisie soit un prix.
mais je ne sais pas quel masque appliqué.
si je met un masque du genre 00000
l'utilisateur peut faire un prix du genre 55_5_5
merci
Tu as la possibilité de mettre un point (ou virgule) dans ton amsk ça permettra d'avoir le séparateur décimal ;)
Il y a aussi le signe ¤ pour le mask, qui permet d'avoir le symbol de monnaie.
ouai j ai vu tout ca mais l utilisateur peut qd meme faire des saisies bizzarres du genre : 55 5 99
j aimerai eviter les espaces.
mets des 9 à la place de tes 0 ;)
avec des 9 et des zeros le resultat est le meme, faut il faire quelque chose pour appliquer le masque?
Pour faire ça j'ai créé un composant dérivé du TextBox avec lequel l'utilisateur ne peut saisir que des données numériques avec ou sans décimal et pouvant préciser le nombre de chiffre avant et après la virgule. Il y a aussi possibilité de mettre en suffixe l'unité monétaire.
Il y a des composants de ce type sur code project.
et sans ton mask ca pourrais donner ceci.
c'est un test que j'ai fait pour des saisies de tarifs, c'est brut en code mais ca tourne.
j'espere ne rien avoir oublier car j'ai supprimer une partie du code, par contre pour le test met toi un autre TextBox et promene toi de l'un a lautre avec la tabulation pour voir le passage en saisie et le formatage en euro.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public partial class maForm : Form { private double licence = 0.0; public maForm() { InitializeComponent(); TextBox.Text = 0.ToString("C"); } private void TextBox_Leave(object sender, EventArgs e) { // je test la chaine avec la fonction double.tryparse si elle respecte la culture je converti au format. if (double.TryParse(TextBox.Text.Trim(), out licence))TextBox.Text = licence.ToString("C"); else { // Exemple si saisie d'un point au lieu d'une virgule c'est erreur MessageBox.Show(this,"Erreur dans votre saisie !\r\nSaisir que des nombres","Fenetre",MessageBoxButtons.OK,MessageBoxIcon.Error); TextBox.Text = licence.ToString("C"); TextBox.Focus(); } } private void TextBox_Enter(object sender, EventArgs e) { // Bon ici c'est un peu brut de decroffrage mais ca tourne. // je supprime les 2 derniers caractères de la longueur de la chaine (c'est uniquement lors de la nouvelle convertion lors du leave du textbox) // Si Quelqu'un a envie de le parfaire, c'est bien pour mettre dans la faq. int lenght = TextBox.TextLength; string valeur = string.Empty; licence = double.Parse(TextBox.Text.Remove(lenght - 2)); valeur = licence.ToString(); TextBox.Text = valeur; } }
si quelqu'un peu le mettre dans la faq ca serais bien
Merci