Buon giorno Ragazzi.
volevo una mano su un piccolo problema di gestione degli eventi.
Sto usando Visual basic 2017 tramite visual studio.
Ho la necessità, cliccando Button1 di creare altri Button, e quando vado a cliccare su di un button creato , di cancellarlo e di far scalare sul form di appartenenza gli altri di una posizione.
mi spiego meglio:
clicco su button1 10 volte, creo altri 10 Button tutti in colonna, distanti tra loro in modo uguale.
se vado a cliccare ad esempio Button4 ,esso deve scomparire ,e al suo posto vi dovrà andare button5, button6 al posto di button5 e cosi via.
ho scritto questo codice:
Public Class Form1
Private WithEvents Buttonew As New System.Windows.Forms.Button
Dim num As Integer = 0
Dim numdue As Integer = 0
Dim x
Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
num += 1
Buttonew = New Button
Buttonew.Name = "Button" + (numdue + num).ToString 'num.ToString
Buttonew.Text = "Button" + (numdue + num).ToString 'num.ToString
x = numdue + num
RichTextBox1.AppendText(" " & Buttonew.Text)
Me.Buttonew.Size = New Size(100, 20) ' qui le dimensioni che vuoi tu
Me.Buttonew.Location = New Point(100, (numdue + num) * 50) 'qui le coordinate che vuoi tu
AddHandler Buttonew.Click, AddressOf Buttonew_Click
'Aggiungo il controllo
Me.Controls.Add(Buttonew)
' TextBox1.Text = Buttonew.Text
TextBox1.Text = Buttonew.Text
TextBox2.Text = num.ToString
TextBox3.Text = x.ToString
End Sub
Private Sub Buttonew_Click(sender As Object, ByVal e As EventArgs) Handles Buttonew.Click
'buttonew è l'ultimo button creato
'buclick è il button cliccato
Dim butclick As Button = CType(sender, Button)
Dim buttonold As Button =
Dim stringnum = Replace(butclick.Name, "Button", "")
For sposta As Integer = stringnum.ToString To TextBox2.Text - 1
Buttonew.Name = "Button" + sposta.ToString
Buttonew.Location = New Point(300, 200)
butclick.Location = New Point(200, 250)
'Controls.Remove(Buttonold)
MessageBox.Show(Buttonew.Name)
Next
' Controls.Remove(Buttonew)
' Controls.Remove(butclick)
End Sub
Private Sub Form1_ControlRemoved(sender As Object, e As ControlEventArgs) Handles Me.ControlRemoved
If num > 0 Then
num -= 1
End If
End Sub
Private Sub Button100_Click(sender As Object, e As EventArgs) Handles Button100.Click
End Sub
il problema che riscontro è che riesco solo ad intervenire su l'ultimo button creato e quelo che ho cliccato, non riesco a gestire sender a dovere. se qualcuno può darmi una mano ,sarei grato.