2010-02-22 3 views
2

Utilisation de VB 2008 Express.Obtention des événements de clic à partir des boutons d'un tableau de contrôle

Il est facile d'attacher du code aux boutons quand ils sont cliqués lorsqu'il s'agit de boutons statiques sur le formulaire. Il suffit de double-cliquer sur le bouton dans le concepteur de formulaire et d'ajouter du code à l'événement.

J'ai une série de boutons qui sont générés dans un tableau de contrôle, donc ils sont générés dans une classe, et dans la forme il n'y a pas de boutons jusqu'à l'exécution.

Alors question débutant avec une réponse probablement simple ... comment puis-je entrer du code pour l'événement click pour les boutons qui ne sont pas là jusqu'à ce qu'ils soient instanciés comme une classe à l'exécution?

Répondre

1

La façon dont vous le feriez pour les boutons réguliers, je pense.

Quelle action voulez-vous effectuer sur chacun des boutons? Si l'action est différente pour chacun des boutons, pourriez-vous donner un exemple de ce à quoi cela ressemble?

EDIT: Code brut avant

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     Dim button As Button() 
     ReDim button(2) 

     Dim button1 As New Button 
     button1.Top = 0 
     button1.Height = 100 
     button1.Text = "hello" 

     Dim button2 As New Button 
     button2.Top = 200 
     button2.Height = 100 
     button2.Text = "world" 

     button(0) = button1 
     button(1) = button2 

     For i As Integer = 0 To 1 
      '** This is where all the buttons are tied, to a common handler 
      AddHandler button(i).Click, AddressOf doSomething 
     Next 

     Me.Controls.AddRange(button) 
    End Sub 


    Protected Sub doSomething(ByVal sender As Object, ByVal e As EventArgs) 
     Dim thisButton As Button 
     thisButton = sender 

     thisButton.BackColor = Color.DarkBlue 
     thisButton.Text = "clicked" 
    End Sub 
+0

Lorsque vous cliquez dessus, je veux passer le bouton à un autre arrière-plan et la couleur de premier plan, et changer le BTN (i) .text, aussi bien. Mêmes actions sur chacun des boutons (c'est une grille pour les basculer entre "normal" et "sélectionné"). Je ne suis pas clair sur la façon de savoir où mettre du code pour intercepter quand on clique sur btn (i), puis exécutez le code pour modifier ou basculer les propriétés, car ce n'est pas dans l'onglet de conception pour le formulaire. –

+0

@shahkalpesh re: edit-votre code consiste essentiellement à ajouter un gestionnaire d'événements appelé button (i) .click à un sous-programme appelé doSomething, puis je créer le sous-programme pour faire ce que je veux qu'il fasse, et les deux seraient partie de la définition de la classe, oui? (Assurez-vous que je comprends ce qui se passe ... Je veux apprendre et pas seulement perroquet le code pour le faire fonctionner simplement :-) Je pourrais aussi avoir besoin de google plus d'infos sur "addhandler" pour le personnaliser, je pense. –

+0

Oui. 'doSomething' est lié à tout l'événement click du bouton. Lisez à propos des événements/délégués dans .net. Vous trouverez beaucoup de bons exemples sur le net/stackoverflow. – shahkalpesh

Questions connexes