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 :

Evènement ne se déclenche pas


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de gnusti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Points : 77
    Points
    77
    Par défaut Evènement ne se déclenche pas
    Bonjour,

    Je rencontre un problème et je n'arrive pas à mettre le doigt sur la solution (et je suis certain que ça ne doit pas être très complexe en plus...).

    J'ai créé un controle personalisé très simple : une sorte de checkBox iPhone Like. Ses fonctions sont (pour l'intant) très basiques :
    Le controle est composé d'une image qui change en fonction de la valeur de sa propriété _value (boolean).

    Apperçu du controle myCheckBox :



    Voici le code correspondant à ce contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Public Class MyCheckBox
     
        Private _value As Boolean = False
     
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            SetValue(False)
        End Sub
     
        Public Sub New(ByVal pValue As Boolean)
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            SetValue(pValue)
        End Sub
     
        Public Function GetValue() As Boolean
            Return Me._value
        End Function
     
        Public Sub SetValue(ByVal pValue As Boolean)
            'Met le _value à la valeur passée en paramètres et affiche l'image correspondante
            Me._value = pValue
            If Me._value Then
                picChk.Image = My.Resources.chk_yes
            Else
                picChk.Image = My.Resources.chk_no
            End If
        End Sub
     
        Public Sub picChk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picChk.Click
            SetValue(Not Me._value)
        End Sub
     
    End Class
    J'ai testé le controle sur un formulaire et il fonctionne parfaitement (changement d'état et d'image).

    J'ai ensuite créé un contôle légèrement plus complexe (shiftControl) et composé en grande majorité de controles myCheckBox.
    Ces contrôles myCheckBox sont ajoutés dynamiquement au controle shiftControl.

    Apperçu du contrôle shiftControle :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Public Class ShiftControl
     
        Private _checks(3, 7) As MyCheckBox
     
        Public Sub New(ByVal pIdLigne As Integer, ByVal pWeekNum As Integer)
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
            'Récupération des contrôles myCheckBox
     
     
            Dim tLefts() As Integer = {2, 46, 90}
            Dim tTops() As Integer = {39, 55, 71, 87, 103, 122, 138}
     
            For iP As Integer = 0 To 2
                For iJ As Integer = 0 To 6
                    'Il faudra vérifier en base la valeur...
                    Me._checks(iP, iJ) = New MyCheckBox()
                    'Positionnement
                    Me._checks(iP, iJ).Top = tTops(iJ)
                    Me._checks(iP, iJ).Left = tLefts(iP)
                    Me._checks(iP, iJ).Visible = True
     
                    'Ajout du controle
                    Me.Controls.Add(Me._checks(iP, iJ))
                Next
            Next
     
        End Sub
     
     
    End Class
    Seulement voilà : les myCheckBox présents dans le shiftContrôle ne déclenchent pas l'évènement Click

    Si quelqun a une idée du pourquoi de la chose, je suis fortement interressé

    Merci

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    J'suis pas un pro en user control mais ne faut-il pas ajouter un handler pour l'event click des contrôles mycheckbox que tu ajoutes à ton shiftcontrol ?

  3. #3
    Membre régulier Avatar de gnusti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Points : 77
    Points
    77
    Par défaut
    J'ai tenté mais ça n'a rien donné (ou alors je m'y suis mal pris)

    Mais le myCheckBox ajouté dynamiquement sur un userForm fonctionne parfaitement lui...

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Je vais tester un peu chez moi ^^

    En plus, c'est sympa comme style de checkbox... Ca te dérange si j'te la pique ? ^^

    J'abuse mais... ça t'ennuierait de filer l'image ? Je pourrais prendre l'aperçu mais j'imagine que la tienne doit être de meilleure qualité.

  5. #5
    Membre régulier Avatar de gnusti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Points : 77
    Points
    77
    Par défaut
    Citation Envoyé par Kropernic Voir le message
    Je vais tester un peu chez moi ^^

    En plus, c'est sympa comme style de checkbox... Ca te dérange si j'te la pique ? ^^

    J'abuse mais... ça t'ennuierait de filer l'image ? Je pourrais prendre l'aperçu mais j'imagine que la tienne doit être de meilleure qualité.
    Pas de soucis

    Envoie moi ton mail en MP, je vais te filer le tout

    sinon, voici le addHandler tel que je l'ai testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    For iP As Integer = 0 To 2
                For iJ As Integer = 0 To 6
                    'Il faudra vérifier en base la valeur...
                    Me._checks(iP, iJ) = New MyCheckBox(True)
                    'Positionnement
                    Me._checks(iP, iJ).Top = tTops(iJ)
                    Me._checks(iP, iJ).Left = tLefts(iP)
                    Me._checks(iP, iJ).Visible = True
     
                    'Ajout d'un handler
                    AddHandler Me._checks(iP, iJ).Click, AddressOf Me._checks(iP, iJ).picChk_Click
     
                    'Ajout du controle
                    Me.Controls.Add(Me._checks(iP, iJ))
                Next
            Next
    Mais pas de changement :'(

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bon bin en fait chez moi ça fonctionne nickel et sans le handler dont je parlais.

    La seule modification que j'ai faite, c'est de retirer les paramètres dans le constructeur du ShiftControl.
    1 : ça permet de l'ajouter au design sur le formulaire
    2 : tu ne les utilisais pas de toute façon.

    Essaie donc en les enlevant pour voir.

  7. #7
    Membre régulier Avatar de gnusti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Points : 77
    Points
    77
    Par défaut
    Toujours pas :'(

    J'ai supprimé les paramètres du constructeur (même si je vais en avoir besoin plus tard) et le résultat est le même.

    J'ai également ajouté un controle shiftControl "graphiquement" mais rien du tout...

    Je vais tester un truc car un doute m'asaille (comme le guerrier ^^)

    <phase de tests...>

    Effectivement, mon intuition était juste : j'ai placé un RectangleShape en fond de contrôle pour y mettre mes bordures et couleurs de fond. J'ai ensuite ajouté les myCheckBox par dessus mais il semble que, bien que le RectangleShape soit en arrière plan, ce soit lui qui chope le Click...

    Je vais retravailler le graphisme et ça va rouler

    Merci Kropernic

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Evidemment, si le clic ne se fait pas sur le bon contrôle, ça marche beaucoup moins bien

  9. #9
    Membre régulier Avatar de gnusti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Points : 77
    Points
    77
    Par défaut
    C'est tout de même étrange que le même contrôle ai fonctionné chez toi...

    Les joies de l'informatique ^^

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 242
    Points
    4 242
    Par défaut
    Bah moi j'ai pris ton code et j'ai refait le user control.

    Donc j'ai pas mis les trucs pour faire joli ^^

    Du coup, le clic se faisait bien sur le bon contrôle. C'est pour ça.

  11. #11
    Membre régulier Avatar de gnusti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Février 2012
    Messages : 55
    Points : 77
    Points
    77
    Par défaut
    Tout s'explique ^^

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

Discussions similaires

  1. Evénement "onclick" qui ne se déclenche pas sur un gadget windows
    Par CryoCid dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/12/2013, 11h55
  2. Evénement Sur erreur ne se déclenche pas
    Par Domi2 dans le forum VBA Access
    Réponses: 6
    Dernier message: 16/07/2008, 13h00
  3. Evènement qui ne se déclenche pas
    Par max.lille dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2006, 15h46
  4. Un JOB qui ne se déclenche pas
    Par blids dans le forum Oracle
    Réponses: 15
    Dernier message: 09/02/2005, 21h14
  5. [trigger] ... qui ne se déclenche pas
    Par bozo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/01/2004, 11h31

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