jellad.tarek
jellad.tarek

Reputation: 133

Add handler to runtime-created control

I found in StackOverflow some vb.net code written by "PaRiMaL RaJ". i want the same think but i must convert this code to work on VB6. can you help me please???

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' creating control
    Dim btn1 As Button = New Button()
    Dim btn2 As Button = New Button()

    btn1.Parent = Me
    btn1.Name = "btn1"
    btn1.Top = 10
    btn1.Text = "Btn1"

    btn2.Parent = Me
    btn2.Name = "btn2"
    btn2.Top = 50
    btn2.Text = "Btn2"

    'adding handler for click event
    AddHandler btn1.Click, AddressOf HandleDynamicButtonClick
    AddHandler btn2.Click, AddressOf HandleDynamicButtonClick


End Sub

Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
    Dim btn As Button = DirectCast(sender, Button)

    If btn.Name = "btn1" Then
        MessageBox.Show("Btn1 clicked")
    ElseIf btn.Name = "btn2" Then
        MessageBox.Show("Btn2 Clicked")
    End If

End Sub

Upvotes: 0

Views: 1181

Answers (1)

Bond
Bond

Reputation: 16311

The easiest way is to use a control array. Add a button to your form in the designer and set its Index property to 0. You can hide the button if you don't want it to be visible.

Then, when you want to dynamically add more buttons at run-time, just use the Load statement.

For example, if your button was named Command1:

Load Command1(1)                     ' Create a new button
Command1(1).Move 50, 50, 1500, 500   ' Set its size and position
Command1(1).Caption = "New Button"   ' Give it a caption
Command1(1).Visible = True           ' Make it visible

The button will use the same event handlers as your original button:

Private Sub Command1_Click(Index As Integer)

    ' Print the caption of the clicked button...
    Debug.Print Command1(Index).Caption

End Sub

Upvotes: 3

Related Questions