IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[C#] Comment stopper un evènement ?


Sujet :

C#

  1. #1
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut [C#] Comment stopper un evènement ?
    Bonjour,

    J'ai un formulaire sur lequel je voudrais vérifier la validité des champs avant l'enregistrement sur une BD. Et je voudrais savoir si il existe une fonction comme "Exit Sub" en vb.net pour stopper le traitement suite au click sur le bouton si les champs ne sont pas correct, au lieu d'envelopper tout dans un if(){} else{}

    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu pourrais faire une itération avec un foreach sur tous les textboxes présents sur ta form.
    Et dès que tu en as un mauvais tu fais un break pour sortir de cette boucle.

  3. #3
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Le "break" va me sortir de la boucle mais pas du traitement de l'évènement que je fais après O_o
    genre j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    private void btnAjouter_Click( ... )
    {
       string nom = txtNom.Text;
       ...
       if(nom.Length == 0)
       // là je voudrais sortir de la méthode "btnAjouter_Click" pour éviter d'ajouter du vent à ma BD ... ;)
       ...
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bah place un Boolean à true.
    Et dès lors que tu rencontres un mauvais encodage, tu le passes à false.
    Et si ton Boolean est égal à false, tu fais pas l'appel à ta méthode d'insertion dans la db.
    C'est un tout petit if, ça me semble le plus simple.

  5. #5
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Ouep c'est ce que j'avais fait, mais au cas où je voulais savoir si il existait pas un truc du genre "Exit Sub" ^^
    Merci quand meme ! =)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bah y a un moyen.
    Enfin deux mêmes.
    Soit tu fais un return.
    Soit tu fais un Goto.

    Entre nous, je préfère le return.
    Fais un return bidon à ce moment là. Pourquoi pas un return de confirmation.
    Tu retournes un int pour savoir si ça s'est bien passé.

    Et en C# y a pas d'exit sub... c'est en VB, ton code est en VB.
    Tu t'es peut-être planté dans le tag.

  7. #7
    Membre émérite
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 276
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 276
    Par défaut
    pas si vite, j'ai un truc qui peut t'interesser, l'error provider, tu en glisse un sur ta form.

    Ensuite on imagine que sur un clic de bouton tu dois vérifier qu'une combobox ai une valeur tu mets ca en debut de procedure de ton clic de bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Trim(combobox.Text) = "" Then
    ErrorProvider1.SetError(combobox, "Please Select a Data")
    ExitSub
    Else
    ErrorProvider1.SetError(combobox, "")
    EndIf
    

  8. #8
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    L'idéal est effectivement de gérer la validation des données avant toutes possibilités de traitement afin par exemple de ne rendre le bouton Enabled que lorsque tout est ok

  9. #9
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    Je fais du C# !! (c'est marqué en dans le titre, et ça se voit dans le code...)
    Donc tout ce que je connais en VB.net c'était le fameux Exit Sub.
    Sinon j'vais essayer de me renseigner sur l'ErrorProvider
    Merci =)

    Edit: L'ErrorProvider, je peux m'en servir dans quelle fonction ? le main() ? un par exemple dans le Load du form ? ou dans une fonction que j'appelle du main() -> comment ? :p

  10. #10
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Citation Envoyé par neguib
    L'idéal est effectivement de gérer la validation des données avant toutes possibilités de traitement afin par exemple de ne rendre le bouton Enabled que lorsque tout est ok
    C'est pas toujours possible ça, à moins de mettre en place des gros traitements bien lourds et pas pratiques.

    Personnellement je lancerais une exception pour régler le problème, mais j'ai l'impression que Hulk a déjà proposé quelque chose d'équivalent.

    Sinon, le Exit Sub en c# c'est return;.

  11. #11
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    return; a l'air de bien fonctionner pour mon problème en fait...
    Merci, j'oublierai pas l'ErrorProvider non plus ;-)

  12. #12
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par davcha
    ... à moins de mettre en place des gros traitements bien lourds et pas pratiques....

    S'il s'agit de TextBox, en quoi ne proposait que de saisir que ce qui est acceptable devient un souci lors d'une dev ??? celà va justement diminuer le traitement de vérification si on a dérivé un TextBox numérique ou un MaskedTextBox pour des dates etc... ensuite il suffit de capturer les validated pour declencher ou pas le Button.Enabled = True

  13. #13
    Membre très actif
    Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Par défaut
    En fait j'avais pas non plus que des textbox (19 valeurs à récupérer en tout), mais aussi des combobox, des checkbox, radiobutton et datetimepicker.

    Donc finalement, je fais ma série de tests après le click sur "ajouter" et quand ça va pas, j'ai fais un switch av un système d' "errorlvl" (ex: errorlvl == 1 : identité incomplète ... ^^) pour alerter d'où provient l'erreur pr l'utilisateur, puis le return;

  14. #14
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Citation Envoyé par neguib

    S'il s'agit de TextBox, en quoi ne proposait que de saisir que ce qui est acceptable devient un souci lors d'une dev ??? celà va justement diminuer le traitement de vérification si on a dérivé un TextBox numérique ou un MaskedTextBox pour des dates etc... ensuite il suffit de capturer les validated pour declencher ou pas le Button.Enabled = True
    Oué, je pensais plus aux contraintes sur les clefs étrangères dans une base de donnée, par exemple.

    Tu vas pas aller t'amuser à vérifier que ce que tu as écrit dans ta TextBox existe bien quelque part dans ta base de donnée à chaque fois que tu tapes un caractères quand même

  15. #15
    Expert confirmé
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Par défaut
    Citation Envoyé par davcha
    Oué, je pensais plus aux contraintes sur les clefs étrangères dans une base de donnée, par exemple.

    Tu vas pas aller t'amuser à vérifier que ce que tu as écrit dans ta TextBox existe bien quelque part dans ta base de donnée à chaque fois que tu tapes un caractères quand même
    Ben j'espère pour toi que tu trouveras dans le framework un autre contrôle que le TextBox pour afficher ce qu'il faut (DataGrid...et dérivés, ComboBox en DropDownList bindé etc...)

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je suis vraiment une quiche en VB lol je savais aps que Exit Sub c'était l'équivalent du return...

  17. #17
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Citation Envoyé par Bapt.ice
    En fait j'avais pas non plus que des textbox (19 valeurs à récupérer en tout), mais aussi des combobox, des checkbox, radiobutton et datetimepicker.

    Donc finalement, je fais ma série de tests après le click sur "ajouter" et quand ça va pas, j'ai fais un switch av un système d' "errorlvl" (ex: errorlvl == 1 : identité incomplète ... ^^) pour alerter d'où provient l'erreur pr l'utilisateur, puis le return;
    Vaut ptet mieux voir ça avec des exceptions et un try catch, c'est fait pour, et ça te permettera aussi de récupérer une exception lancée par ton SGBDR de façon assez élégante.

    Sinon, neguib, si justement ton SGBDR te renvoie un code d'erreur (à cause d'une transaction qui échoue par exemple) comment tu fais pour récupérer cette erreur avant qu'elle ne se produise (vu qu'elle se produit "ailleurs") ?

  18. #18
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par davcha
    Vaut ptet mieux voir ça avec des exceptions et un try catch, c'est fait pour,
    Qu'est-ce qu'il y a d'exceptionnel à trouver une valeur invalide quand on est dans une méthode de validation ?

    Citation Envoyé par davcha
    et ça te permettera aussi de récupérer une exception lancée par ton SGBDR de façon assez élégante.
    Ça oui. Encore que les exceptions qu'on se récupère depuis la base sont rarement suffisamment précises pour savoir quoi faire au juste avec
    Mais là on est dans la méthode de validation. Si la mise à jour de la base se faite au même endroit, il y a un problème de design à corriger avant de s'occuper de gérer les exceptions

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VB6] Comment Stopper un Timer ??
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 05/05/2006, 10h46
  2. [vbexcel]Comment stopper une macro sans la planter.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/11/2005, 15h45
  3. [Run]Comment stopper un prog sous Eclipse
    Par smag dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 31/07/2005, 01h48
  4. Réponses: 6
    Dernier message: 17/06/2005, 17h51
  5. Réponses: 17
    Dernier message: 19/10/2004, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo