[VB.NET] Evènement _Click se fait en boucle infinie
Résolu
Orbital38
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
Orbital38 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Orbital38 Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'avais évoqué ce problème sur un sujet plus général mais je préfère en ouvrir un autre qui ne porte que là-dessus (avec un titre plus précis).
Actuellement j'ai une Form où je veux créer des boutons par code VBA.
Pour cela j'utilise le module de la Form et un module de classe.
Les évènements MouseEnter et MouseLeave sur mes boutons fonctionnent très bien (je change la BackgroundImage du bouton). Cependant l'évènement _Click (ou _MouseClick, _MouseUp, _MouseDown) ne fonctionne pas. Enfin si il fonctionne, mais même avec un simple MsgBox celui-ci apparait en boucle (que je le valide par OK ou que je le ferme). Ce problème doit sûrement venir d'une mauvaise définition des contrôles de ma part (ou de la collection que j'utilise ?).
Voici les bouts de code que je pense important :
Dans mon module de Form :
Dans mon module de classe :
Lors de la répétition en boucle, la valeur de noraj ne bouge pas, il s'agit à chaque fois du bouton sur lequel j'ai appuyé. C'est comme si à chaque validation ou annulation de la MsgBox il détecte un Click sur le bouton.
Si je change une image par exemple, le changement se fait mais je garde la main sur la souris, du coup je peux appeler un autre évènement (comme MouseLeave) et arrêter le _Click.
Si j'appelle une macro qui elle appelle aussi une messagebox, j'ai de nouveau le problème.
Si je mets un j = j+1 (j=1 au tout début de la classe) et que je fais du pas à pas (et que je n'appelle pas d'autre évènement), la procédure _Click se fait en boucle et j retombe à 1 à chaque début de procédure.
Merci d'avance à celui qui trouve le problème.
J'avais évoqué ce problème sur un sujet plus général mais je préfère en ouvrir un autre qui ne porte que là-dessus (avec un titre plus précis).
Actuellement j'ai une Form où je veux créer des boutons par code VBA.
Pour cela j'utilise le module de la Form et un module de classe.
Les évènements MouseEnter et MouseLeave sur mes boutons fonctionnent très bien (je change la BackgroundImage du bouton). Cependant l'évènement _Click (ou _MouseClick, _MouseUp, _MouseDown) ne fonctionne pas. Enfin si il fonctionne, mais même avec un simple MsgBox celui-ci apparait en boucle (que je le valide par OK ou que je le ferme). Ce problème doit sûrement venir d'une mauvaise définition des contrôles de ma part (ou de la collection que j'utilise ?).
Voici les bouts de code que je pense important :
Dans mon module de Form :
Public Class Outils Public Collect As Collection [...] Private Sub Outils_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove Dim test3000 As Classe1 Collect = New Collection For Each Ctrl As System.Windows.Forms.Button In Me.Controls.OfType(Of Button).Where(Function(button) button.Name Like "Bouton100*") test3000 = New Classe1 test3000.noraj = Ctrl Collect.Add(test3000) Next Ctrl End Sub [...] End Class
Dans mon module de classe :
Public Class Classe1 Public WithEvents noraj As System.Windows.Forms.Button Private Sub noraj_MouseEnter(sender As Object, e As EventArgs) Handles noraj.MouseEnter Call Outils.test_couleur_bouton2(noraj) End Sub Private Sub noraj_MouseLeave(sender As Object, e As EventArgs) Handles noraj.MouseLeave Call Outils.test_couleur_bouton1(noraj) End Sub Private Sub noraj_Click(sender As Object, e As EventArgs) Handles noraj.Click 'Call Outils.analyse_tag(noraj.Tag.ToString) MessageBox.Show("test", "ici titre MsgBox") End Sub End Class
Lors de la répétition en boucle, la valeur de noraj ne bouge pas, il s'agit à chaque fois du bouton sur lequel j'ai appuyé. C'est comme si à chaque validation ou annulation de la MsgBox il détecte un Click sur le bouton.
Si je change une image par exemple, le changement se fait mais je garde la main sur la souris, du coup je peux appeler un autre évènement (comme MouseLeave) et arrêter le _Click.
Si j'appelle une macro qui elle appelle aussi une messagebox, j'ai de nouveau le problème.
Si je mets un j = j+1 (j=1 au tout début de la classe) et que je fais du pas à pas (et que je n'appelle pas d'autre évènement), la procédure _Click se fait en boucle et j retombe à 1 à chaque début de procédure.
Merci d'avance à celui qui trouve le problème.
A voir également:
- [VB.NET] Evènement _Click se fait en boucle infinie
- Evenement whatsapp - Accueil - WhatsApp
- Évènement facebook disparu - Forum Facebook
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Redémarrage en boucle Xiamo mi note 10 - Forum Xiaomi