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 :

Contrôle utilisateur : l'événement Click [Débutant]


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 61
    Par défaut Contrôle utilisateur : l'événement Click
    Bonjour ,

    J'ai créé un contrôle utilisateur personnalisé et voila :

    en bref le dominant dans mon contrôle c'est une PictureBox ... en général tout marche bien Sauf le gros problème que j'ai : lorsque j'utilise mon contrôle sur une form l'événement clic ne marche pas !
    si je clique sur la partie dominante de mon contrôle (la pictureBox) rien ne marche, le clic ne se déclenche pas ,mais lorsque je clique en dehors de la pictureBox (sur le sol de l'user-control) l’événement se déclenche ...

    comment faire pour que mon contrôle prenne le clic sur la PictureBox comme étant le clic sur le contrôle ?

    merci d'avance

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Le click marche, sauf que ce n'est pas le bon, si dans ta classe d'userControl tu mets une messagebox("hello world") pour picturebox.Click tu verras que tu auras ta messagebox.

    Il faudrait que transmettes l'event .Click de ta picturebox vers ton control parent (qui est un panel ?).

    Exemple pour transmettre l'event :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click 'Dans mon cas c'est Form1 mais toi ce sera ton control parent de ton user control
            MsgBox("hello world")
        End Sub
     
        Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
            Me.Form1_Click(sender, e)
        End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 61
    Par défaut
    merci Ez3kiel pour votre réponse

    j'ai essayé votre code ca marche mais uniquement si l'instruction est dedans mais pas si l'instruction est sur la form de test

    j'explique : mon controle est comme une sorte de bouton ; lorsque je pose mon controle sur une form de test je fais appel à des instructions dans la form pas dans le controle

    dans votre exemple si je met le (MsgBox("hello world")) dans le code du controle ca marche mais si je met le (MsgBox("hello world")) dans le code de la form du test alors le click ne marche toujours pas ;; il marche si je click sur le panel (du controle) mais pas sur la picturebox

  4. #4
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    bonjour;

    tu peux mettre ton picturebox en public dans ton usercontrol
    dans la classe usercontrol.desinger.cs .

    dans ton form tu peux t abonner au click aussi dans ta classe form1.designer.cs

    en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     usercontrol1.PictureBox1.MouseClick+=new MouseEventHandler(
     
    picOneFaceUpA.MouseClick += new MouseEventHandler(PictureBox1_Click)
     
      void PictureBox1_Click(object sender, EventArgs e)
    .....

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par azstar Voir le message
    bonjour;
    dans ton form tu peux t abonner au click aussi dans ta classe form1.designer.cs
    Tu es sûr qu'il va trouver exactement ce fichier-là dans son projet ?

  6. #6
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par identifia Voir le message
    merci Ez3kiel pour votre réponse

    j'ai essayé votre code ca marche mais uniquement si l'instruction est dedans mais pas si l'instruction est sur la form de test

    j'explique : mon controle est comme une sorte de bouton ; lorsque je pose mon controle sur une form de test je fais appel à des instructions dans la form pas dans le controle

    dans votre exemple si je met le (MsgBox("hello world")) dans le code du controle ca marche mais si je met le (MsgBox("hello world")) dans le code de la form du test alors le click ne marche toujours pas ;; il marche si je click sur le panel (du controle) mais pas sur la picturebox
    Le code doit se trouver dans le code de l'usercontrol, dans mon exemple c'est sur Form1, mais comme précisé en commentaire : "'Dans mon cas c'est Form1 mais toi ce sera ton control parent de ton user control"

    Ainsi lorsque tu utiliseras ton usercontrol sur une Form et que tu cliques sur la picturebox, il le transmettra à son parent (qui sera le reste de ton usercontrol).

    Ps: Si le parent de ton usercontrol est un bouton tu as accès à .PerformClick() pour également lancer l'event Click du parent.

    Pss: Le cas échéant peut-on voir le code de ton userControl ?

  7. #7
    Membre Expert
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Par défaut
    Je ne peux pas savoir les noms qu il donne à ces variables !!!!!!!
    Chaque form à sa classe designer .

  8. #8
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Citation Envoyé par azstar Voir le message
    Je ne peux pas savoir les noms qu il donne à ces variables !!!!!!!
    Chaque form à sa classe designer .
    Je pense qu'il parlait du .cs et du fait qu'on soit sur le forum VB.NET.

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 61
    Par défaut
    Merci tout le monde pour vos réponses

    je vais donner le code pour que ca soit plus claire :

    voila le controle :



    ma classe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class Btn_Pic
     
        Public Property My_Picture() As Image
            Get
                Return img2.Image
            End Get
            Set(ByVal value As Image)
                img2.Image = value
            End Set
        End Property
     
        Private Sub img2_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles img2.MouseDown
            img1.BackColor = Color.Gold
        End Sub
    le code de _Ez3kiel que j'ai ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      Private Sub Btn_Pic_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Click
            'MsgBox("hello world")
        End Sub
     
        Private Sub img2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles img2.Click
            Me.Btn_Pic_Click(sender, e)
        End Sub
    le controle je veux l'utiliser sur plusieurs form voila un exemple d'utilisation :

    MaForm1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      Private Sub Btn_Pic_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_Pic.Click
            Dim MyFrm2 As New MyFrm2 
            MyFrm2 .Show()
        End Sub
    alors là lorsque je clique sur le vide (le gris) ca amrche ,mais si je clique sur la partie verte (le img2) rien ne se déclenche

    ...

  10. #10
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    J'ai créé un usercontrol Btn_Pic et y ai rentré une PictureBox img2, j'ai collé mon code, j'ai placé cet userControl dans ma Form1 et ça marche chez moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class Btn_Pic
     
        Private Sub Btn_Pic_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Click
            MsgBox("hello world")
        End Sub
     
        Private Sub img2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles img2.Click
            Me.Btn_Pic_Click(sender, e)
        End Sub
     
    End Class
    Tu ne confonds pas img1 et img2 ? Lorsque tu testes tes clicks c'est sur MyFrm2 ou Btn_Pic à l'intérieur de MyFrm2 ?

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 61
    Par défaut
    c'est normale que ca marche , parceque tu a mis le MsgBox dans le code du controle

    dans ton cas je ne peux utiliser mon controle que pour afficher un message hello world!

    moi je veux utiliser le controle dans plusieurs forms donc je ne peux pas mettre les instructions dans le code du controle

    par exemple dans la from1 je pose le controle et dans le click je veux qu'il m'affiche "aaaaaaa"

    et dans la form2 je pose le controle et je veux qu'il m'affiche "bbbbbbb" en cliquant

    je ne sais pas si vous avez compris

    moi ce que je veux c'est là dans le code de MaForm1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Btn_Pic1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_Pic1.Click
            Dim MyFrm2 As New MyFrm2 
            MyFrm2 .Show()
        End Sub
    je veux que myFrm2 s'affiche

    et que si je pose le controle dans MaForm3 que je lui donne une autre instruction au clic

    essaye de mettre le controle sur une form de test et met le hello world dans le clic du controle mais dans le code de la form de test et d'enlever le hello world posé dans le code du controle

  12. #12
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    J'ai lu en diagonale, mais si j'ai bien compris la problématique, il suffit simplement de déclencher l'évènement Click du UserControl lors du click sur l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub img2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles img2.Click
      Me.OnClick(e)
    End Sub
    Bonne journée
    eb.

  13. #13
    Membre confirmé
    Inscrit en
    Janvier 2009
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 61
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Bonjour,

    J'ai lu en diagonale, mais si j'ai bien compris la problématique, il suffit simplement de déclencher l'évènement Click du UserControl lors du click sur l'image :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub img2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles img2.Click
      Me.OnClick(e)
    End Sub
    Bonne journée
    eb.
    merciiiiiiiiii ca marche maintenant vous m'avez sauvez la vie
    merci pour vous tous

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

Discussions similaires

  1. [Débutant] Contrôle NumericUpDown et événements utilisateurs
    Par BasicZX81 dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/01/2014, 12h43
  2. (Contrôle utilisateur) Gestion des click
    Par CIFQ_Drew dans le forum C#
    Réponses: 2
    Dernier message: 07/10/2010, 15h22
  3. gérer l'évènement Click du contrôle Image
    Par naruto01 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/01/2007, 18h43
  4. événement Click sur Check et option button ??
    Par badsepuku dans le forum IHM
    Réponses: 3
    Dernier message: 09/02/2006, 12h51

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