By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,934 Members | 1,476 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,934 IT Pros & Developers. It's quick & easy.

Multiple AddHandler for multiple Controls on a form

P: n/a
GAZ
Hello all,

We have a bit of a problem. We have a form where we have to add controls
dynamically during runtime. That part is quite simple. Now, we have to add a
ButtonClick event for each of the controls. That's where it becoms tricky.

Here is the bit of code we use:

-------------------------------------------------------------------------------------
TextControl = New Asd.ControlLibrary.AsdTextControl

Me.TextControl.BackColor = System.Drawing.Color.Transparent
.....additional properties setup

If CheckStoredProcedure <"" Then
Me.TextControl.CheckStoredProcedure = CheckStoredProcedure
Me.TextControl.ButtonBook = True
Me.TextControl.ErrrorProvider = True
Me.TextControl.CheckRequired = True
End If

AddHandler TextControl.ButtonBookClick, AddressOf TextControl_ButtonBook

Me.Controls.Add(TextControl)
--------------------------------------------------------------------------------------

Now, everything works fine and each control acts as a separate control, but
the TextControl_ButtonBook fires only for the very last created control. I
have tried adding 'sender' parameter to the procedure but the addressof
won't accept it.

Any help and/or insight is much appreciated.

Thanks in advance.

GAZ
Jul 20 '07 #1
Share this Question
Share on Google+
2 Replies


P: n/a
The code below works as expected for me. I create a Form , add a
button named Button1 to it and subscribe to its click event. Then in
the click handler I dynamically add another button every time Button1
is clicked.

Public Class Form1
Dim testButton As Button
Dim a As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Me.testButton = New Button()
Me.testButton.Name = String.Format("test{0}", a)
Me.testButton.Location = New Point(a * 100, 10)
a += 1
AddHandler testButton.Click, AddressOf Test_Click
Me.Controls.Add(Me.testButton)
End Sub

Private Sub Test_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Dim c As Control = CType(sender, Control)
MessageBox.Show(c.Name)
End Sub
End Class
====================
Clay Burch
Syncfusion, Inc.

Jul 20 '07 #2

P: n/a
GAZ
Thanks for the answer. Problem was not in the code, it was in the event
declaration of the control. The event declaration was missing the ByVal
sender as Object bit.

Thanks,

GAZ
"ClayB" <cl***@syncfusion.comwrote in message
news:11*********************@j4g2000prf.googlegrou ps.com...
The code below works as expected for me. I create a Form , add a
button named Button1 to it and subscribe to its click event. Then in
the click handler I dynamically add another button every time Button1
is clicked.

Public Class Form1
Dim testButton As Button
Dim a As Integer = 0
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles Button1.Click
Me.testButton = New Button()
Me.testButton.Name = String.Format("test{0}", a)
Me.testButton.Location = New Point(a * 100, 10)
a += 1
AddHandler testButton.Click, AddressOf Test_Click
Me.Controls.Add(Me.testButton)
End Sub

Private Sub Test_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Dim c As Control = CType(sender, Control)
MessageBox.Show(c.Name)
End Sub
End Class
====================
Clay Burch
Syncfusion, Inc.

Jul 20 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.