Bouton "indexé" [Résolu]

laurent.cpasmoi 7 Messages postés samedi 22 novembre 2003Date d'inscription 29 décembre 2012 Dernière intervention - 7 août 2010 à 18:34 - Dernière réponse : laurent.cpasmoi 7 Messages postés samedi 22 novembre 2003Date d'inscription 29 décembre 2012 Dernière intervention
- 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
foliv57 423 Messages postés vendredi 17 novembre 2006Date d'inscription 15 juillet 2014 Dernière intervention - 7 août 2010 à 19:47
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

Merci foliv57 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de foliv57
Meilleure réponse
laurent.cpasmoi 7 Messages postés samedi 22 novembre 2003Date d'inscription 29 décembre 2012 Dernière intervention - 7 août 2010 à 22:16
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

Merci laurent.cpasmoi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de laurent.cpasmoi
laurent.cpasmoi 7 Messages postés samedi 22 novembre 2003Date d'inscription 29 décembre 2012 Dernière intervention - 7 août 2010 à 21:49
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.