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 :

Reprendre l'event d'un contrôle ?


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut Reprendre l'event d'un contrôle ?
    Rekikoooo

    J'en reviens à la création de contrôle.

    Dans un contrôle perso j'ai plusieurs autres contrôles (comme une richtextbox comme certains le savent déjà )

    Je voudrais que mon contrôle reprenne l'event d'un des contrôles existants.

    Par ex je voudrais que mon contrôle au final ait un event SelectionChanged() qui reprend en fait le même évènement sur le contrôle RichTextbox inclu dans mon contrôle perso.

    J'ai cherché dans la doc, mais je ne tombe que sur des aspects "généraux" de la gestion d'events. Il y aurait il une façon simple de reprendre ces évènements ?

    merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    C'est à dire ? Je n'ai pas très bien compris
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Crystal Noir Voir le message
    Je voudrais que mon contrôle reprenne l'event d'un des contrôles existants.

    Par ex je voudrais que mon contrôle au final ait un event SelectionChanged() qui reprend en fait le même évènement sur le contrôle RichTextbox inclu dans mon contrôle perso.
    Bon, en substance tu veux propager vers le container de ton usercontrol certains event émis par les contrôles contenus dans ce même usercontrol ?

    C'est bien cela ?

    Ben si c'est cela, c'est simplissime : tu déclare l'event au niveau de ton userControl, et dans le handler du control dont tu veux propager l'event tu apelles l'event déclaré dans le UserControl.

    Exemple : tu veux envoyer un événement ClickTheButton quand on clique sur le button1 de ton usercontrol :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            public event EventHandler ClickTheButton;
            private void button1_Click( object sender, EventArgs e )
            {
                if (ClickTheButton!= null)
                {
                    ClickTheButton( this, e );
                }
            }
    Je vous laisse traduire en VB, ça me gave ce langage.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  4. #4
    Expert confirmé
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Points : 4 388
    Points
    4 388
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Je vous laisse traduire en VB, ça me gave ce langage.
    C'est très bien le VB.NET !!

    Voilà la traduction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Public event ClickTheButton as EventHandler 
            Private  Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
                If Not ClickTheButton Is Nothing Then
                    ClickTheButton(Me, e)
                End If
            End Sub
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  5. #5
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    En fait, tu veux propager l'évènement initialement issu de ton RTF.

    Donc ça n'est pas un eventhandler qu'il te faut mais un event tout court.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Class UserControl1
     
        Public Event SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
     
        Private Sub RichTextBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.SelectionChanged
            RaiseEvent SelectionChanged(sender, e)
        End Sub
    End Class
    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Merci de vos réponses,

    alors il va falloir que je teste tout car je sais pas lequel des deux codes correspond à ce que je veux

    je récapitule, vous m'avez donné deux snippets :

    Le premier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Public event ClickTheButton as EventHandler 
            Private  Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
                If Not ClickTheButton Is Nothing Then
                    ClickTheButton(Me, e)
                End If
            End Sub
    Le second :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class UserControl1
     
        Public Event SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs)
     
        Private Sub RichTextBox1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles RichTextBox1.SelectionChanged
            RaiseEvent SelectionChanged(sender, e)
        End Sub
    End Class

    En fait j'ai mon usercontrol (donc mon contrôle perso) la dedans j'ai un controle rtf.

    Déjà dans mon usercontrol j'ai codé quelques events pour automatiser certaines choses.

    Maintenant ce que je veux c'est que l'utilisateur de mon usercontrol (donc le développeur qui va l'utiliser dans ses applis) puisse à son tour ajouter des évènements personnalisés.

    Par ex j'ai moi dans mon usercontrol codé l'event SelectionChanged()

    Dans cet event il y a plusieurs instructions.

    Maintenant ce que je veux c'est que lorsque je vais compilé mon usercontrol qu'il y ait également un SelectionChanged() en event que le développeur pourra utiliser pour ajouter ce qu'il lui faut par rapport à son application.

    On pourrait appeler cela porter l'évènement sur le usercontrol au final pour que le developpeur puisse ajouter son propre code relatif à cet event en plus de celui qui existe déjà et qui a été compilé avec le usercontrol.

    Cela dit il ne faut pas que son code remplace celui que moi j'ai déjà compilé mais s'ajoute. sinon le usercontrol ne répondra plus correctement Donc je vois peut être plus le second code

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.

    En fait, tu veux propager l'évènement initialement issu de ton RTF.

    Donc ça n'est pas un eventhandler qu'il te faut mais un event tout court.
    Euh... le comportement de ton code est rigoureusement identique à ce que j'ai proposé.
    EventHandler est un delegate prédéfini.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  8. #8
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Exact blue (j'avais pas tout saisi !), pour ma décharge, la traduction en vb.net serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Public Event ClickTheButton As EventHandler
        Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
            RaiseEvent ClickTheButton(Me, e)
        End Sub
    Où j'ai encore raté un truc ???

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Tout à fait : l'instruction RaiseEvent n'a pas d'équivalent en C#, mais correspond en effet à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(delegateMethod != null)
    {
        delegateMethod();
    }

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    pourquoi "!= null" ?

    On dirait que enfin je parle de la version C# que ca remplace un code déjà existant dans l'event original ?

    Je dois dire que je maitrise pas tout en C#

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Par ce que, si tu tentes d'appeler un event non abonné, ça pête; donc tu test qu'il y a bien un abonnement dessus.

    C'est ce que fait le RaiseEvent du langage VerBeux : il n'appelle rien, si pas d'abonnement.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

Discussions similaires

  1. Mouse events sur Form, à travers les contrôles
    Par Jeterh dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/11/2012, 18h52
  2. Réponses: 0
    Dernier message: 21/11/2011, 18h05
  3. Contrôle personnalisé et event
    Par Invité dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 24/06/2010, 22h20
  4. Remonter event depuis contrôle perso.
    Par C_le_N dans le forum Silverlight
    Réponses: 3
    Dernier message: 24/12/2009, 10h43
  5. Réponses: 2
    Dernier message: 24/12/2008, 09h27

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