Comment puis je vérifier si un champs est numerique ? et s'il est vide ? avec le error^provider ? est ce que je dois créer un errorProvider pour tous les textbox de mon formulaire ou chacun aura un son propre error provider ?
Comment puis je vérifier si un champs est numerique ? et s'il est vide ? avec le error^provider ? est ce que je dois créer un errorProvider pour tous les textbox de mon formulaire ou chacun aura un son propre error provider ?
ErrorProvider sert seulement à afficher l'erreur, pas à faire la validation. Il suffit que tu en mettes un seul sur la form, pas besoin d'en mettre un par contrôle. C'est très facile à utiliser, regarde dans la doc pour un exemple.
Pour tester si une valeur est numérique, il y a différentes méthodes...
Tu peux utiliser Int32.TryParse (pour un entier) ou Double.TryParse (pour un double ou flottant), ou alors tu peux référencer l'assembly Microsoft.VisualBasic pour utiliser la méthode Information.IsNumeric. Ou alors tu peux aussi t'en sortir avec la méthode Convert.ToInt32 (ou Convert.ToDouble), avec un try/catch
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ok, j'ai pu utilisé le error provider, pour tester si des champs sont numérique (isDigit)ou letter(isLetter), mais j'ai un autre petit soucis par rapport a autre champs qui ne doivent pas etre vide, le error provider ne detetcte pas ca, ce que je compte faire c'est de mettre deux error providers, le premier pour tester la validité des champs avec l'evenement validating, et l'autre au moment de la validation du formulaire pour tester si les champs sont vides ???,
j'ai un champ qui contient des lettres + nombres + le caractere "/" ? je sais pas si vous avez une idée sur comment puis je vérifier la validité de ce champs ?
Encore une fois, le ErrorProvider ne détecte rien du tout, il ne sert qu'à l'affichage de l'erreur. Pas la peine d'en créer un 2e pour tester autre chose, tu peux utiliser le même, puisque de toutes façons ce n'est pas lui qui fait le test.
Pour tester si le champ est vide, utilise la méthode String.IsNullOrEmpty
avec une expression régulière peut-être...
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
mais quel evenement je vais utilisé la chaine pour detecter si le champ est vide ?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Bah concrétement l'ERROR Provider comme dit plus haut va te servir par exemple avant un enregistrement a vérifier si tout tes champs sont bien formés ou ne sont pas nulls pour certain si en base les NULLABLES ne sont pas activés.
Donc tu définit une méthode propre dans le genre :
Avec ce booléen tu sauras si tes champs sont bien remplis avec un point d'exclamation rouge près de ton control (Combobox ,TextBox,etc )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private bool VerificationSaisieObligatoire() { // Par défaut , le control est négatif bool bChange = false; string sMessage = Properties.Resources.MessageSaisieObligatoire; if (_AmieAdresseLivraison != null && _AmieAdresseLivraison.SelectedIndex < 1) { ErrorProviderCommande.SetError(CmbAdresseLivraison, sMessage); } else { bChange = true; } return bChange; }
Il faut faire attention pour ce qui est du validating du formulaire. Imagine que jai un bouton Save + Cancel sur mon formulaire. J'ouvre le formulaire pour faire un modification (je vide un champs qui doit pas etre vide lors du save) et que je fait cancel ou que je close le formulaire ... le validating va se faire appelé, et tu va faire un e.cancel = true car il y as un champs qui est vide. Cependant, c'est légal davoir un champs vide car je ne sauvegarde pas, je fait seulement cancellé le formulaire.
Je te conseil plutot de te faire une méthode Validate() qui est appeler seulement lors du save.
Remoting Context Matters
Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
jusqu'a maintenant j'ai pas eu les resultat souhaité, mon but c'est de verifier si un champs est vide et qu'il contient un numerique, j'ai reussi a controlet si le champs et numérique avec l'evenement validiting et le error provider mais un champs est vide NONNNNNNNNNNNNNNNNNN, je dois cliquer dans le champs, a ce moment la il le controle sinon si je clique directement sur le boutton valider il appele la methode de sauvegarde : voila ce que j'ai fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 private void textBox1_Validating(object sender, CancelEventArgs e) { if (textBox1.TextLength == 0) { errorProvider1.SetError(textBox1, "Le champ ne doit pas être vide"); e.Cancel = true; } else { errorProvider1.SetError(textBox1, null); } } private void btnOK_Click(object sender, EventArgs e) { //méthode de sauvegarde; }
Je te conseil de revoir tes bases de la programmations car ce que tu demande est montré dans 90% des livres de base dans le chapitre 1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private bool IsDocumentValid() { errorProvider.SetError(textBox1, string.Empty); if (string.IsNullOrEmpty(textBox1.Text)) { errorProvider.SetError(textBox1, "Can't be empty"); return false; } int textboxValue = 0; if (!int.TryParse(textBox1.Text, out textboxValue)) { errorProvider.SetError(textBox1, "Must be numeric"); return false; } return true; } private void button1_Click(object sender, EventArgs e) { if (!IsDocumentValid()) return; } }
Remoting Context Matters
Everything in this chapter is 100 percent undocumented. Reliance on these techniques is not supported by either Microsoft, the publisher, or the author of this book. Use at you own risk! If your computer won't work afterwards, your toaster blows up or your car doesn't start, I assume no liability whatsoever: You're now about to enter the uncharted territories of .NET and you do so on your own risk. I can only provide some guidance
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager