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

VB.NET Discussion :

[VB.Net 2.0] Comment déléguer le traitement des evenements ?


Sujet :

VB.NET

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [VB.Net 2.0] Comment déléguer le traitement des evenements ?
    Bonjour, j'ai un problème qui ne doit pas être si compliqué que ca, mais je rame, et je ne m'en sors pas avec les tutoriaux.

    Le but d'un petit programme que je suis en train de faire est de faire colorier en vert une label ( changer la couleur de la police, ca j'y arrive) lorsque je clique sur un bouton. ca c'est facile à faire, mais je voudrai que la fonction qui gère l'evenement soit dans un module à part, et non dans le code de la feuille, est-ce possible ? le plus simplement possible ...

    merci d'avance

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Salut

    Je suis pas sur d'avoir compris la question, le terme "gerer les evenements" est un peu flou...

    - Si c'est pour abonner des fonctions a des evenements dans le code, c'est possible avec Addhandler, la fonction declanchee peut etre dans une autre instance d'objet

    Tu as un petit exemple ici:
    http://plasserre.developpez.com/v8-3.htm

    PS il ne faut pas oublier de faire un RemoveHandler

    - Si c'est juste un appel de fonction, c'est simple tu cree une fonction de changement de couleur pour un controle dans le module et tu l'apelles dans ton button.click de la form

    Si c'est toujours pas ce que tu cherches a faire: explique un peu plus

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse.

    Je vais essayer d'etre un peu plus clair.
    Dans ma feuille, j'ai un bouton et un label dont le texte est "coucou" ecrit en noir. Lorsque je double clique sur le bouton, ca crée une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sub Button1_Click ( sender As Object, EvArg As EventArgs) Handles Button1.Click
    je voudrai simplement déplacer cette fonction dans un module et non la laisser dans le code de la feuille. Mais le probleme est que lorsque je la colle dans un module, "Button1" est souligné en vert et j'obtiens l'erreur suivante :

    Handles clause requires a WithEvents variable defined in the containing type or one of its base types.

    Je souhaiterai simplement pouvoir déplacer cette fonction dans un autre fichier ( module ) de manière à ne pas surcharger le code de la feuille.

    J'espère que mon explication est un peu plus claire, si il y a plusieurs manières de faire je les accepte avec plaisir

    Merci d'avance

  4. #4
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    Le plus simple c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Class Maform
    ...
    Sub Button1_Click ( sender As Object, EvArg As EventArgs) Handles Button1.Click
       ZeModule.ChangeCouleur( directcast(sender, control) )
    End Sub
    ...
    End Class
     
    Zemodule:
     
    Public Function ChangeCouleur (controleCible as control)
        controleCible.backcolor = red
    End function
    L'autre possibilite que je conseille pas dans ce cas (c'est un peu trop tordu et tu dois desabonner l'evenement) la c'est d'abonner l'evenement Click du bouton a une fonction se trouvant dans le module:

    - Copie ta fonction dans le module
    - Mets Public devant
    - Supprime Handles Button1.Click a la fin
    - Dans le code du chargement de la form ajoute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AddHandler Button1.Click, AddressOf  ZeModule.Button1_Click
    Encore une fois je te le dis: je te donne ce code pour assouvir ta curiosite faire correspondre un evenement de form a une sub dans un module c'est pas terrible, parce qu'il ne faut pas oublier de desabonner l'evenement avec un RemoveHandler (il faudrait en mettre plusieurs suivant le mode de fermeture de la form, bref c'est pas joli)

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    la deuxieme solution fonctionne à merveille, merci bcp

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/10/2005, 10h29
  2. [Vs.Net & SQL Serveur] Comment faire fonctionner le Débu
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 31/08/2005, 19h23
  3. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50
  4. [VB.NET] Page Edition, comment traiter les <br?
    Par zigoto dans le forum ASP.NET
    Réponses: 12
    Dernier message: 08/02/2005, 17h05
  5. [VB.NET] Le DataBinding en vb.net, c'est comment?
    Par Pleymo dans le forum ASP.NET
    Réponses: 11
    Dernier message: 04/02/2005, 14h14

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