Meilleur auteur de réponses
GroupBox

Question
-
Avec visual 2008, j'essaie d'utiliser des labels comme controles dans mes groupbox et aussi les classiques checkbox et radiobutton. Au debogage, je n'arrive pas à intercepter l'évenement click sur ces controles. en vba c'etait facile, le groupbox renvoyait l'index du controle cliqué. en vb2008 rien de tel et je ne vois pas ecrire des kilometres de code (à mon age) pour intercepter les clicks controle après controle (+ de 200)...
J'ai bien sur regroupé ces controles, groupbox par groupbox en collections afin qu'ils soient indexés ...- Modifié FredDorine dimanche 20 mars 2011 11:29
Réponses
-
En fait vous souhaitez intercepter les évènements click de tous les contrôles sans avoir à surcharger votre code ?
Essayez :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each ctrl As Control In Me.GroupBox1.Controls AddHandler ctrl.Click, AddressOf OnClickGeneral Next End Sub Public Sub OnClickGeneral(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox(sender.ToString & " a été cliqué") End Sub
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement. - Best Regards.- Proposé comme réponse scalpa dimanche 20 mars 2011 17:50
- Marqué comme réponse Alex Petrescu lundi 21 mars 2011 15:25
Toutes les réponses
-
Bonjour FredDorine,
Que voulez-vous obtenir comme résultat lors du clic sur un contrôle ? c'est en runtime ? Ou lors de la création du programme ?
Lors de la création il faut soit faire du "drag and drop" et placer le contrôle à l'endroit souhaité, soit double-cliquer dessus.
Aussi, Si vous voulez entrer dans l'évènement par défaut d'un contrôle (comme l'évènement Click d'un bouton) il faut double-cliquer sur le contrôle concerné une fois posé sur le formulaire.
J'espère que ça répond à votre problème.
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement. - Best Regards. -
Bonjour,
Utilisez l'événement checked_changed pour lancer une action au clic d'un control comme ceci:
Public Class Form1 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged 'code End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged 'code End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If RadioButton1.Checked = True Then 'code End If If CheckBox1.Checked = True Then 'code End If End Sub End Class
fred -
En fait vous souhaitez intercepter les évènements click de tous les contrôles sans avoir à surcharger votre code ?
Essayez :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For Each ctrl As Control In Me.GroupBox1.Controls AddHandler ctrl.Click, AddressOf OnClickGeneral Next End Sub Public Sub OnClickGeneral(ByVal sender As Object, ByVal e As System.EventArgs) MsgBox(sender.ToString & " a été cliqué") End Sub
N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement. - Best Regards.- Proposé comme réponse scalpa dimanche 20 mars 2011 17:50
- Marqué comme réponse Alex Petrescu lundi 21 mars 2011 15:25
-
-
Un grand merci pour ta solution "MAGIQUE", elle résoud tous mes problèmes..! Mieux, en utilisant sender.tag on obtient un entier qui identifie le controle activé (à condition de l'avoir "tagé" bien sur. Cela résoud tous les problèmes d'indexation que les "vieux progammeurs" comme moi ont du mal à transposer de VB6. Merci encore...!
-