Solved

VS 2005 - C# Event

Posted on 2006-06-11
8
817 Views
Last Modified: 2008-03-05
Has anyone experienced this?
When a control (say a button) is moved (cut) to another container
(say a panel)(paste), the event originally assigned is gone. I have
to go to its property and manually re-assign again for it to work.

To overcome this problem , I have tried to assign the event programmatically
but the event will be fired more than once if it has already been assigned
using the designer.

Can I programatically check if the event has been assigned in the first place?

Thanks.
0
Comment
Question by:michellechan57
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 48

Expert Comment

by:AlexFM
ID: 16883420
You can remove existing event handler before adding new one:

button1.Click -= new EventHandler(this.button1_Click);
button1.Click += new EventHandler(this.button1_Click);

This doesn't fail also if currently there is no association.
0
 
LVL 19

Expert Comment

by:Desp
ID: 16883641
if (button1.Click ==null)
button1.Click += new EventHandler(this.button1_Click);
0
 

Author Comment

by:michellechan57
ID: 16884178
Hi Desp,
Received following error message:

The event 'System.Windows.Forms.Control.Click' can only appear on the left hand side of += or -=C:\WindowsApplication2\Source.cs      32      25      MyApp

0
 

Expert Comment

by:Seraph_78
ID: 16890706
Create a method as follows:

        public void AddEventHandler(EventHandler handler)
        {
            if (Event != null)
            {
                bool addHandler = true;
                Delegate[] d = Event.GetInvocationList();

                foreach (Delegate de in d)
                {
                    if (handler.Target == de.Target)
                    {
                        addHandler = false;
                        break;
                    }
                }
                if (addHandler)
                {
                    Event += handler;
                }
            }
            else
            {
               Event += handler;
            }
        }

That way you will ensure that the handler will only get added if it hasnt been added already.

Hope that helps.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 

Author Comment

by:michellechan57
ID: 16891140
Hi Seraph_78,

Where is Event declared and declared as what type?

If its button1.Click event then I probably will have the same error
message mentioned in the previous comment.

Thanks.
0
 

Expert Comment

by:Seraph_78
ID: 16891152
Event is just name for an event.  So yes button1.Click.
The code ensures that you dont attach the same handler more than once.

If you are getting the error mentioned before are you sure you are attaching the handler to the event and not somehow having the event on the right hand side of the asignment.
0
 

Author Comment

by:michellechan57
ID: 16891574
Hi,

The compiler error message occurred at the statement when I test if the event is null.
It occurred before any assignment of handler.
It says the "event" can only appear on the left of  either += or -=.

Am I missing something here or I have misunderstood some important point?
Please help. Thanks.
0
 
LVL 48

Accepted Solution

by:
AlexFM earned 500 total points
ID: 16892014
Any chance that you will try my solution, wich both compiles and works?
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
Article by: Najam
Having new technologies does not mean they will completely replace old components.  Recently I had to create WCF that will be called by VB6 component.  Here I will describe what steps one should follow while doing so, please feel free to post any qu…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now