J'essaie d'attraper formatxception code> à partir d'une zone de texte. Par exemple, si l'utilisateur entre dans un numéro ou tout autre caractère dans le champ Nom de la zone de texte Nom. Le message va apparaître - quelque chose s'est mal passé. Je suis assez nouveau à C # et je ne comprends pas le concept d'exceptions. Ci-dessous ne fonctionne pas. Quelle est une exception correcte pour le format invalide?
4 Réponses :
catch (FormatException ex) { MessageBox.Show("Something went wrong !"); }
Est-il possible de montrer uniquement un message à l'intérieur de citations doubles?
Exigence: "Par exemple - Si l'utilisateur entre dans le champ Nom de la zone de texte Nom. Le message apparaîtra - quelque chose s'est mal passé."
Qu'est-ce qui passe ex code> dans le gestionnaire a eu à voir avec la question?
Si vous devez rechercher des chiffres dans la zone de texte Nom, alors: Vous devez également afficher un message plus spécifique pour chacun des cas.
Mise à jour forte>
Ce que vous devriez vraiment faire est: p>
Exigence: "Par exemple - Si l'utilisateur entre dans le champ Nom de la zone de texte Nom. Le message apparaîtra - quelque chose s'est mal passé."
@Amit - Je soupçonne que l'OP s'est trompé l'exigence. Je suis assez certain qu'il voulait dire le contraire.
Votre regex est cassé et il y a peu de points lancer le formatexception code> car c'est ce que
int.parse code> fera de toute façon. Vous avez posté un code incorrect qui ajoute simplement BLOAT.
@Enigmativitittivité dans la section de commentaires aussi, il l'a confirmé. "Essayer Catch est invoqué sur le bouton Cliquez sur le bouton. Je saisra un nom dans Text Box1, qui doit être au format de chaîne, sinon je veux afficher la boîte de message". Quelque chose s'est mal passé ". N'a pas répondu cette réponse, mais je souhaite que cela soit modifié pour une exigence correcte.
@Amit - j'ai demandé à l'op de confirmer.
La TEXTBOX1 doit être un nom (Vinícius, Amit ou énigmativité est valide), mais Vini2010 ou AM1T ne le sont pas. Pour faire une validation complète de la chaîne étant un nom est difficile. Je l'ai simplement aidé avec la pièce "Si l'utilisateur entre dans un champ de zone de texte Nom Nom. Le message apparaîtra - quelque chose s'est mal passé".
Textbox2 est l'âge, il faut donc être un nombre. Si l'utilisateur entre "deux", le code lancera automatiquement une exception dans la ligne: "Int Âge = int.parse (Textbox2.text);".
Il y a très peu d'occasions où attrape (exception) code> est la bonne chose à faire.
Essayez ceci pour afficher le message.
try { double mydoubleParam = 0; // Assuming textBox1.Text is Name test box if (double.TryParse(textBox1.Text, out mydoubleParam)) { new Exception(" Numeric value in name field"); } int age = int.Parse(textBox2.Text);// Assuming Number text box MessageBox.Show("How are you today?"); } catch (FormatException ex) { MessageBox.Show("Something went wrong"); }
Et si textbox1 a une valeur "am123t" .. est-ce valide? Si non, votre code ne fonctionne pas bien.
Vous pouvez le gérer dans l'événement TEXTCHANGED, comme celui-ci:
private void textBox1_TextChanged(object sender, EventArgs e) { int a; bool isNumeric = int.TryParse(textBox1.Text, out a); if (isNumeric) { MessageBox.Show("Something went wrong"); } }
Même si je doute de l'appeler parfait, cette réponse a un sens +1 - il suffit d'ajouter du code pour éviter tous les autres caractères non alphabétiques et assurez-vous également qu'ils ne sont pas ajoutés dans la chaîne de texte de Textbox après cette validation.
Quelle valeur vous entrez dans
textbox1 code> et
textbox2 code>?
Quel message vous voulez voir dans MessageBox?
Essayez Catch est invoqué sur le bouton Cliquez. Je saisis le nom dans la zone de texte1 qui doit être au format à la chaîne sinon je souhaite montrer une boîte de message indiquant "quelque chose mal tourné".
Vous ne faites aucune validation autour de
textbox1.text code>. C'est pourquoi vous ne recevez pas l'erreur. Si vous souhaitez que l'utilisateur entrave uniquement une valeur de chaîne (pas le numéro), vous pouvez la mettre en œuvre plusieurs façons. Vérifiez Cet anwser
Dupliqué possible de Comment faire une zone de texte Accepter uniquement les caractères alphabétiques? < / a>
@Harpeet - Pouvez-vous confirmer votre exigence? Votre code ne ferait que lancer une exception si le
textbox2.text code> contenait un non-numéro, mais vous avez dit que vous souhaitez que l'exception contienne un numéro. Et si elle contenait une partie d'un numéro? Pouvez-vous clarifier s'il vous plait?
S'il vous plaît clarifier avec des exemples. Décrivez ce que vous avez entré dans les deux boîtes de texte i>. Et dites-nous à la fois vos résultats attendus i> et résultats réels i>. Je le demande parce que ce n'est pas clair ce que vous voulez avoir lieu. Si je devais deviner, à ce stade, il semble que vous souhaitiez interdire à quelqu'un d'entrer un numéro dans la zone de texte "Nom". Est-ce correct? Saviez-vous que INT.PARSE organisera une exception si vous vous transmettez une chaîne vide? Probablement votre TextBox2 est juste vide lorsque vous cliquez sur le bouton et c'est pourquoi l'exception se produit - car textbox2.text est vide.
Je m'attends à ce que la Textbox1 n'accepte que la valeur de chaîne I.e. n'importe quel nom. Si l'utilisateur entre dans d'autres caractères ou numéros, cliquez sur le bouton, je souhaite afficher le message d'erreur indiquant: «Quelque chose ne va pas». Le cas de TextBox2- qui accepte l'âge (doit être un entier positif). Si je saisis l'âge dans n'importe quel autre que nécessaire au format requis - et cliquez sur le bouton - encore une fois, je veux que le message indique - "quelque chose a mal tourné". Je veux aussi attraper NullReferenceException. J'espère que ces choses claires.
Un exemple - j'ai entré quelque chose comme - "& 123" dans textbox1 et cliquez sur le bouton Soumettre. Le message apparaîtra montrant - "Quelque chose a mal tourné" (n'importe quel message aléatoire). De même, si j'entre "ABC" dans texbox2 - essayez de prendre la capture doit gérer l'exception de format et montrer une erreur dans la zone de message. C'est ce que je veux jusqu'à présent.