VS 2005 - C# Event

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.
michellechan57Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
AlexFMConnect With a Mentor Commented:
Any chance that you will try my solution, wich both compiles and works?
0
 
AlexFMCommented:
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
 
Fahad MukhtarDistinguished EngineerCommented:
if (button1.Click ==null)
button1.Click += new EventHandler(this.button1_Click);
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
michellechan57Author Commented:
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
 
Seraph_78Commented:
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
 
michellechan57Author Commented:
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
 
Seraph_78Commented:
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
 
michellechan57Author Commented:
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
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.