Oppure

Loading
24/04/20 19:54
rosariofrangella
Ciao a tutti,
premetto che mi sto approcciando da poco alla programmazione. Vorrei programmare dei button che genero con questo ciclo for:

For f As Integer = 1 To variabile
Dim btn As New Button
btn.Name = "btn" & f
btn.Text = "..."
listfl(f+1).Controls.Add(btn)
Next f

Questi button che genero dovranno aprirmi poi un altro form, ma non riesco programmarli avendo un nome variabile!
Grazie in anticipo :k:
aaa
25/04/20 10:54
Carlo
Espando la tua prova, ma sappi che ci sono altri metodi.
Per avere l'indice e poterlo usare per identificare i singoli bottoni puoi creare una matrice di bottoni.
La variabile NButtons l'ho dichiarata Byte, significa che puoi creare al massimo 255 bottoni (un bel numero)

Public Class Form1
    Dim NButtons As Byte = 9 ' qui quanti bottoni intendi realizzare
    Dim btn(NButtons) As Button ' matrice di bottoni con indice
    Dim frm(NButtons) As Form ' matrice di form con indice

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        For f As Byte = 1 To NButtons
            btn(f) = New Button
            btn(f).Name = "bottone " & f.ToString("00")
            btn(f).Text = "btn" & f
            btn(f).Tag = f ' per recuperare l'indice nell'evento click
            btn(f).Location = New Point(10, f * 25) ' colonna 10, riga progressiva
            ' .... tutte le altre proprietà che ti occorrono
            Me.Controls.Add(btn(f)) ' aggiunge il bottone al Form
            ' bisoga aggiungere anche l'evento click
            AddHandler btn(f).Click, AddressOf btn_OnClick
            ' creo i form vuoti, ci metterai quello che ti serve
            frm(f) = New Form
            frm(f).Text = "Sono il form " & f
            frm(f).ShowInTaskbar = False
        Next f
    End Sub

    Private Sub btn_OnClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
        ' In sender tutte le proprietà del bottone cliccato
        ' Top, Left o Location, Hight, Width o Size ecc ecc
        ' 2 esempi per avere l'indice e il nome
        Dim IndiceBottone As Byte = sender.tag()
        Dim NomeBottone As String = sender.name
        Me.Text = "Indice = " & IndiceBottone.ToString & " - " & NomeBottone
        ' mostro il form in accordo con il bottone cliccato
        If frm(IndiceBottone).Text = "" Then
            ' ricreo il form se chiuso
            frm(IndiceBottone) = New Form
            frm(IndiceBottone).Text = "Sono il form ricreato" & IndiceBottone
            frm(IndiceBottone).ShowInTaskbar = False
            frm(IndiceBottone).Show()
        Else
            frm(IndiceBottone).Show()
        End If
    End Sub
End Class


Se specifichi cosa ti occorre, l'esempio sarebbe più fruibile.
Con questo sistema sono molte le cose che dovrai gestire se l'utente interagirà con i vari form...
Ultima modifica effettuata da Carlo 25/04/20 11:56
in programmazione tutto è permesso