0
votes

Essayez de ne pas montrer le message d'erreur pour la formatexception

J'essaie d'attraper formatxception à 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? xxx


9 commentaires

Quelle valeur vous entrez dans textbox1 et textbox2 ?


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 . 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 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 . Et dites-nous à la fois vos résultats attendus et résultats réels . 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.


4 Réponses :


-1
votes
 catch (FormatException  ex)
{
   MessageBox.Show("Something went wrong !");
}

3 commentaires

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 dans le gestionnaire a eu à voir avec la question?



-1
votes

Si vous devez rechercher des chiffres dans la zone de texte Nom, alors: xxx

Vous devez également afficher un message plus spécifique pour chacun des cas.

Mise à jour

Ce que vous devriez vraiment faire est: xxx


8 commentaires

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 car c'est ce que int.parse 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) est la bonne chose à faire.



0
votes

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");
        }


1 commentaires

Et si textbox1 a une valeur "am123t" .. est-ce valide? Si non, votre code ne fonctionne pas bien.



0
votes

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");
            }
        }


1 commentaires

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.