none
GroupBox RRS feed

  • 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 ...
    dimanche 20 mars 2011 10:37

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
    dimanche 20 mars 2011 11:56

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.
    dimanche 20 mars 2011 11:02
  • 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
    dimanche 20 mars 2011 11:05
  • 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
    dimanche 20 mars 2011 11:56
  • merci beaucoup, je vais de ce pas essayer...
    dimanche 20 mars 2011 14:00
  • 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...!
    lundi 21 mars 2011 12:29
  • Encore merci pour ta réponse...
    lundi 21 mars 2011 12:30