Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Windows Forms / WinForm General / July 2007

Tip: Looking for answers? Try searching our database.

Multiple AddHandler for multiple Controls on a form

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
GAZ - 20 Jul 2007 10:21 GMT
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
ClayB - 20 Jul 2007 10:53 GMT
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.
GAZ - 20 Jul 2007 11:06 GMT
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

> 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
[quoted text clipped - 24 lines]
> Clay Burch
> Syncfusion, Inc.

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.