Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Programmare un button con nome variabile!
Forum - C# / VB.NET - Programmare un button con nome variabile!

Avatar
rosariofrangella (Normal User)
Newbie


Messaggi: 1
Iscritto: 24/04/2020

Segnala al moderatore
Postato alle 21:54
Venerdì, 24/04/2020
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:

PM Quote
Avatar
Carlo (Member)
Expert


Messaggi: 600
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 12:54
Sabato, 25/04/2020
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)

Codice sorgente - presumibilmente VB.NET

  1. Public Class Form1
  2.     Dim NButtons As Byte = 9 ' qui quanti bottoni intendi realizzare
  3.     Dim btn(NButtons) As Button ' matrice di bottoni con indice
  4.     Dim frm(NButtons) As Form ' matrice di form con indice
  5.  
  6.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  7.         For f As Byte = 1 To NButtons
  8.             btn(f) = New Button
  9.             btn(f).Name = "bottone " & f.ToString("00")
  10.             btn(f).Text = "btn" & f
  11.             btn(f).Tag = f ' per recuperare l'indice nell'evento click
  12.             btn(f).Location = New Point(10, f * 25) ' colonna 10, riga progressiva
  13.             ' .... tutte le altre proprietà che ti occorrono
  14.             Me.Controls.Add(btn(f)) ' aggiunge il bottone al Form
  15.             ' bisoga aggiungere anche l'evento click
  16.             AddHandler btn(f).Click, AddressOf btn_OnClick
  17.             ' creo i form vuoti, ci metterai quello che ti serve
  18.             frm(f) = New Form
  19.             frm(f).Text = "Sono il form " & f
  20.             frm(f).ShowInTaskbar = False
  21.         Next f
  22.     End Sub
  23.  
  24.     Private Sub btn_OnClick(ByVal sender As System.Object, ByVal e As System.EventArgs)
  25.         ' In sender tutte le proprietà del bottone cliccato
  26.         ' Top, Left o Location, Hight, Width o Size ecc ecc
  27.         ' 2 esempi per avere l'indice e il nome
  28.         Dim IndiceBottone As Byte = sender.tag()
  29.         Dim NomeBottone As String = sender.name
  30.         Me.Text = "Indice = " & IndiceBottone.ToString & " - " & NomeBottone
  31.         ' mostro il form in accordo con il bottone cliccato
  32.         If frm(IndiceBottone).Text = "" Then
  33.             ' ricreo il form se chiuso
  34.             frm(IndiceBottone) = New Form
  35.             frm(IndiceBottone).Text = "Sono il form ricreato" & IndiceBottone
  36.             frm(IndiceBottone).ShowInTaskbar = False
  37.             frm(IndiceBottone).Show()
  38.         Else
  39.             frm(IndiceBottone).Show()
  40.         End If
  41.     End Sub
  42. 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 il 25/04/2020 alle 13:56


in programmazione tutto è permesso
PM Quote