Start New Discussion within our Software Development Community

Hi - me again...

I have a large list of names that are stored in an array. I want to load the names in groups of 30 and have a button named after each name. The button is on another form that is 'shown' when the names are all loaded.

I can't find a way of referencing the name to refer to the button by...

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        For i = 1 To 30
            Form2.button & (i).text = AAMName(i))

        Next
    End Sub

This is how I tried to reference it, but it fails.

Currently I am having to load each button name manually, not using the loop, but using the hideously long...

Form2.Button1.Text = AAMName(i)
Form2.Button2.Text = AAMName(i + 1)
.
.
.
Form2.Button30.Text = AAMName(i + 29)

HELP!!!!!
I have over 1000 names to use!

You could create the buttons in a method then add them to the form:

For i = 0 To AANAME.Count - 1
    Dim btn As New Button

    With btn
        .Name = "btn" & i
        .Size = New Drawing.Size(70, 20)
        .Text = "CLICK ME"
    End With

    MyForm.Controls.Add(btn)
Next

Then create a sub procedure for that Form's ControlAdded Event to set the location properties.

For example:

  Private Sub MyForm_ControlAdded(sender As Object, e As System.Windows.Forms.ControlEventArgs) Handles Me.ControlAdded
    Try
        Dim pLastControl As Drawing.Point = Me.Controls(Me.Controls.Count - 1).Location

        e.Control.Location = New Drawing.Point(pLastControl.X, pLastControl.Y + 25) '20 pixels for button size and 5 pixels padding

        'Will add each control as follows
        'Button1
        'Button2
        'Button3

        'Code can be changed as desired to place controls in desired location.
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub
This article has been dead for over six months. Start a new discussion instead.