Plusieurs icones associées à un évenement ?

tuyn00txa Messages postés 27 Date d'inscription samedi 8 janvier 2011 Statut Membre Dernière intervention 12 juin 2011 - 23 nov. 2010 à 23:00
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 26 nov. 2010 à 23:04
Bonjour, je voudrais associer plusieurs icônes (PictureBox1, PictureBox2, PictureBox3) mais pas TOUS, à 2 évenements, comment faire ça?

Merci pour votre aide


Voici mon code

 Private Sub icone_survol(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseEnter
        verif1 = False
        verif2 = True
        PictureBox1.Size = New Size(42, 42)
        PictureBox1.Location = New Point(PictureBox1.Location.X - 1, PictureBox1.Location.Y - 1)
        Application.DoEvents()
        Threading.Thread.Sleep(50)
        PictureBox1.Size = New Size(44, 44)
        PictureBox1.Location = New Point(PictureBox1.Location.X - 1, PictureBox1.Location.Y - 1)
        Application.DoEvents()
        Threading.Thread.Sleep(50)
        PictureBox1.Size = New Size(46, 46)
        PictureBox1.Location = New Point(PictureBox1.Location.X - 1, PictureBox1.Location.Y - 1)
        If verif1 True Then PictureBox1.Size New Size(40, 40)
        If verif2 False And verif1 True Then PictureBox1.Location = New Point(PictureBox1.Location.X - 3, PictureBox1.Location.Y - 3)
    End Sub

    Private Sub icone_seloigner(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.MouseLeave
        Application.DoEvents()
        PictureBox1.Size = New Size(40, 40)
        PictureBox1.Location = New Point(PictureBox1.Location.X + 3, PictureBox1.Location.Y + 3)
        verif1 = True
        verif2 = True
    End Sub

5 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2010 à 18:22
Salut,

Private Sub icone_survol([...]) Handles PictureBox1.MouseEnter, PictureBox2.MouseEnter, PictureBox3.MouseEnter

Sachant que l'objet sender représente le contrôle qui déclanche l'événement, donc :

        Dim pBox As PictureBox = DirectCast(sender, PictureBox)
        verif1 = False
        verif2 = True
        pBox.Size = New Size(42, 42)
        pBox.Location = New Point(pBox.Location.X - 1, pBox.Location.Y - 1)
        Application.DoEvents()
        Threading.Thread.Sleep(50)
        pBox.Size = New Size(44, 44)
        pBox.Location = New Point(pBox.Location.X - 1, pBox.Location.Y - 1)
        Application.DoEvents()
        Threading.Thread.Sleep(50)
        pBox.Size = New Size(46, 46)
        pBox.Location = New Point(pBox.Location.X - 1, pBox.Location.Y - 1)
        If verif1 True Then pBox.Size New Size(40, 40)
        If verif2 False And verif1 True Then pBox.Location = New Point(pBox.Location.X - 3, pBox.Location.Y - 3)


Je suppose...

Par contre, j'ai une question: Ou est la logique de ton code ? verif1 et verif2 sont des variables de test que tu as oublié de retirer ? Car si ce n'est le cas, leur valeur ne changeront jamais d'elles même, ce qui implique que ces morceaux de code ne servent à rien.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
tuyn00txa Messages postés 27 Date d'inscription samedi 8 janvier 2011 Statut Membre Dernière intervention 12 juin 2011
24 nov. 2010 à 23:08
Merci Mayzz pour ta solution, ça marche .

En faite j'ai crée les variables verif1 et verif2 pour éviter des bugs.
Verif1 et verif2 changent de valeur si on passe rapidement la souris sur l'icône, car à ce moment là (presque instantanée), les 2 évenements s'enclenchent, du coup si icone_survol s'execute alors qu'on a retiré la souris de l'icône, la taille de l'icone restera grande...


D'ailleurs, j'ai un petit bug qui me dit lorsque je passe la souris rapidement et plusieurs fois sur une icône : "Une exception non gérée du type 'System.StackOverflowException' s'est produite dans System.Windows.Forms.dll" pour cette ligne là :
 pBox.Location = New Point(pBox.Location.X - 1, pBox.Location.Y - 1)

Il est bien évident que ce bug se produirait très rarement... mais je veux vraiment le résoudre.

Pourrait tu m'aider à le résoudre si je t'envoi mon projet sur visual basic 2010 express?
0
tuyn00txa Messages postés 27 Date d'inscription samedi 8 janvier 2011 Statut Membre Dernière intervention 12 juin 2011
24 nov. 2010 à 23:28
Ou plutôt une question peut être plus simple, soit 2 évènements X et Y associé chacun à une fonction (sub), comment faire en sorte que, si les 2 évenements sont actives, la première fonction associé à l'évenement X s'effectue et dès que la fonction se termine, la fonction associé à l'évenement Y commence ? (jamais les 2 évenements ensemble)

J'éspère que je me suis fait comprendre
0
tuyn00txa Messages postés 27 Date d'inscription samedi 8 janvier 2011 Statut Membre Dernière intervention 12 juin 2011
26 nov. 2010 à 19:15
personne pour m'aider ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
26 nov. 2010 à 23:04
Bonjour,

Pour ta gestion, tu peux faire plus simple avec un Timer :

Sub Timer(...) Handles ...
    Select Case mEtape
        Case -1
            PictureBox1.Size = New Size(40, 40)
        Case 0 'Pas de survol
            'Ne rien faire
        Case 1
            PictureBox1.Size = New Size(44, 44)
            mEtape+=1
        Case 2
            ....
        Case 3
            ....
        Case 4
            mEtape=0
    End select
End Sub


Et pour Le survol et le retrait :
Sub MouseEnter(...) Handles Me.MouseEnter
    mEtape=1
End sub

Sub MouseLeave(...) Handles Me.MouseLeave
    mEtape=-1
End sub


Ensuite, il faudra gérer le passage à l'étape 0 si on est pas encore à l'étape 4, mais ça devrait être dans tes co(r)des :)

Mon site
0
Rejoignez-nous