Bouton "indexé" [Résolu]

Messages postés
7
Date d'inscription
samedi 22 novembre 2003
Dernière intervention
29 décembre 2012
- - Dernière réponse : laurent.cpasmoi
Messages postés
7
Date d'inscription
samedi 22 novembre 2003
Dernière intervention
29 décembre 2012
- 7 août 2010 à 22:16
bonjour,

Je souhaiterais créer une série de bouton, nommé de A à Z avec un "indexage" de 1 à 24 par exemple de sort à pouvoir traiter en fonction du bouton cliquer l'action qui va bien :

if Button(i)_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) then
if i = 1 then msgbox ("bonjour")
if i = 2 then msgbox ("coucou")
....
if i = 24 then msgbox ("au revoir"
end if


Merci pour votre aide
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
15 juillet 2014
3
Merci
Bonjour,

Il faudra faire quelque chose du stye:

    Sub CreateButton()
        Dim MesButtons() As Button = New Button() {New Button(), New Button(), New Button()}

        For i As Integer = 0 To 2
            MesButtons(i).Name = "A" & i.ToString
            AddHandler MesButtons(i).Click, AddressOf Button_Click
        Next

    End Sub

    Private Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim buttonName As String = CType(sender, Button).Name
        Select Case Convert.ToInt32(Strings.Right(buttonName, buttonName.Length - 1))
            Case 0
                MsgBox("Titi")
            Case 1
                MsgBox("Tata")
            Case 2
                MsgBox("Toto")
        End Select

    End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de foliv57
Messages postés
7
Date d'inscription
samedi 22 novembre 2003
Dernière intervention
29 décembre 2012
3
Merci
Avec les explications de foliv57 et plusieurs itérations, cela fonctionne :
Sub CreateButton()
        For i As Integer = 0 To 2
            Me.MesButtons(i) = New System.Windows.Forms.Button()
            AddHandler MesButtons(i).Click, AddressOf Button_Click
            Me.MesButtons(i).Name = "A" & i.ToString
            Me.MesButtons(i).Location = New System.Drawing.Point(137 + i * 100, 56 + i * 10)
            Me.MesButtons(i).Size = New System.Drawing.Size(51, 52)
            Me.MesButtons(i).Text = "Z" & i.ToString
            Me.Controls.Add(Me.MesButtons(i))

        Next
        Me.SuspendLayout()

    End Sub

    Public Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
        Dim buttonName As String = CType(sender, Button).Name
        Select Case Convert.ToInt32(Strings.Right(buttonName, buttonName.Length - 1))
            Case 0
                MsgBox("Titi")
            Case 1
                MsgBox("Tata")
            Case 2
                MsgBox("Toto")
        End Select

    End Sub

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de laurent.cpasmoi
Messages postés
7
Date d'inscription
samedi 22 novembre 2003
Dernière intervention
29 décembre 2012
0
Merci
de mon coté, cela ne fonctionne pas, sur ta proposition j'ai réussi à créé les boutons comme cela :

Sub CreateButton()
Dim MesButtons() As Button = New Button() {New Button(), New Button(), New Button()}

For i As Integer = 0 To 2
Me.MesButtons(i) = New System.Windows.Forms.Button()
Me.MesButtons(i).Name = "A" & i.ToString
Me.MesButtons(i).Location = New System.Drawing.Point(137 + i * 100, 56 + i * 10)
Me.MesButtons(i).Size = New System.Drawing.Size(51, 52)
Me.MesButtons(i).Text = "Z" & i.ToString
Me.Controls.Add(Me.MesButtons(i))
AddHandler MesButtons(i).Click, AddressOf Button_Click
Next
Me.SuspendLayout()
End Sub

Par contre quand je clique sur les boutons créés, rien ne se passe... la fonction Button_Click (que j'ai mis en private ou public) n'est pas appelé :

Public Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim buttonName As String = CType(sender, Button).Name
MsgBox("Button_Click")
Select Case Convert.ToInt32(Strings.Right(buttonName, buttonName.Length - 1))
Case 0
MsgBox("Titi")
Case 1
MsgBox("Tata")
Case 2
MsgBox("Toto")
End Select
End Sub

des idées comment faire ?

Merci
Commenter la réponse de laurent.cpasmoi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.