.Net Windows Form... Event Bubbling is what I guess it would be called... Please Read!!!

Hi, I got a windows form that has 14 panels... Each panel has 3 labels on it.  What I want to capture is when someone clicks on the label.  Right now I have to do a click event for all 14 panels and for all 42 labels.  

Is there a way, hopefully easy, that I can tell the panel to handle all the events and for the labels to just buzz off...

I really want to get away from having to have that many click events.  If you ever have to cut and paste it somewhere else and you lose all the event handlers, then it really sucks unless you copied your code into notepad first.  

Tony
LVL 1
picsnetAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Babycorn-StarfishCommented:
A crude way would be to initially have a reference to all your labels stored in a List collection. Then iterate using your preferred looping method and add the handler to the current label. So...

(excuse the messy pseudocode)
labellist

foreach(label l in labellist)
     add event handler.

0
Mike TomlinsonMiddle School Assistant TeacherCommented:
You can wire them all up in the Forms Load() event...

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        For Each ctl As Control In Me.Controls
            If TypeOf ctl Is Panel Then
                AddHandler ctl.Click, AddressOf Something_Click
                For Each subCtl As Control In ctl.Controls
                    If TypeOf subCtl Is Label Then
                        AddHandler subCtl.Click, AddressOf Something_Click
                    End If
                Next
            End If
        Next
    End Sub

    Private Sub Something_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Debug.Print(TypeName(sender) & " --> " & sender.name)
    End Sub

End Class
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
juniorDevCommented:
You can create your own custom control that includes the group box and the labels.  In the custom control, create the click events for each of the labels and the groupbox.  Include whatever code you want to execute.

Creating a control is just like creating a class.  It can have properties and methods.  If you want the text, size, and position of the labels to be customizable, you'll need to create the appropriate properties and methods in the control's class.  Once you've done this, you should be able to use this same control on one form as many times as you want.  Problem is solved because you actually only made one set of "click-events."
0
Rowby Goren Makes an Impact on Screen and Online

Learn about longtime user Rowby Goren and his great contributions to the site. We explore his method for posing questions that are likely to yield a solution, and take a look at how his career transformed from a Hollywood writer to a website entrepreneur.

ShannonECommented:
So what you're saying is you want 14 events rather than 42?  It's really easy...just click on each label on each of your forms, view the properties, click the events button on the property sheet (the lightening bolt), and on the 'Click' event type the method name that you want to be called (eg Panel1Click, Panel2Click...Panel14Click).  

If it doesn't matter which Panel the label is on, then you can type the same event handler method for each label and essentially have just one method handler
0
picsnetAuthor Commented:
It seems like all these would work.  It was between idle_minds and shannone's.   I chose idleminds because it allowed me to do something very generic that I won't ever have to do again since the panels change for each client.  

Shannon's... I'd have to redo the properties for each application.  I was hoping I was missing something and it had something like web event bubbling built in, but no such luck I guess.  

Tony

0
juniorDevCommented:
If you create a custom control, you will be able to reuse it just like a class.
0
picsnetAuthor Commented:
i know.  i like doing web ones.  I'm just not that gungho about windows programming to start down that path.  
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
C#

From novice to tech pro — start learning today.