Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add textboxes, labels and buttons dynamically at runtime in VB?

How to create a form with a button add_subjects which adds one textbox and a corresponding label on each click,3 buttons - Add, Edit and Delete, for each textbox created during runtime in VB. Once each texbox's corresponding Add _button is clicked, it passes textbox's value to the label.

like image 723
user3172488 Avatar asked Oct 22 '25 15:10

user3172488


1 Answers

Private Property number as Integer=1

Private Sub add_subject_Click(sender As Object, e As EventArgs) Handles add_subject.Click
    Dim tb As New TextBox
    tb.Name="TextBox"+number.ToString
    tb.Position = New Point(number*40,10) ' change this if you want
    Me.Controls.Add(tb)
    Dim lb As New Label
    lb.Name="Label"+number.ToString
    lb.Position = New Point(number*40,50) ' change this if you want
    Me.Controls.Add(lb)
    Dim add As New Button
    add.Name="AddButton"+number.ToString
    add.Position = New Point(number*40,100) ' change this if you want
    AddHandler(add.Click, AdressOf(add_Click))
    Me.Controls.Add(add)
    Dim edit As New Button
    edit.Name="EditButton"+number.ToString
    edit.Position = New Point(number*40,150) ' change this if you want
    AddHandler(edit.Click, AdressOf(edit_Click))'you have to make edit_Click
    YourForm.Controls.Add(edit)
    Dim delete As New Button
    delete.Name="DeleteButton"+number.ToString
    delete.Position = New Point(number*40,200) ' change this if you want
    AddHandler(delete.Click, AdressOf(delete_Click))'you have to make delete_Click
    Me.Controls.Add(delete)
    number+=1
End Sub

So we make all controls, dynamically make names, change positions, add handlers and add controls to form.

Private Sub add_Click(sender As Object, e As EventArgs)
    Ctype(Me.Controls.Find("Label"+sender.Name.Substring(9),True).First,Label).Text = Ctype(Me.Controls.Find("TextBox"+sender.Name.Substring(9),True).First,TextBox).Text 
End Sub

Here we find Label And TextBox using sender's number(sender.Name.Substring(9) will remove AddButton and leave number) and change Label.Text to TextBox.Text.

Get all label values and insert them in database:

Private Sub save(sender As Object, e as EventArgs) Handles button_save_subjects.Click
For i = 1 to number
    Dim value As String
    value = CType(Me.Controls.Find("Label"+number.ToString).First,Label).Text
    'insert into database
Next
End Sub
like image 139
srka Avatar answered Oct 24 '25 05:10

srka