Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

VS 2005 - C# Event

Posted on 2006-06-11
8
Medium Priority
?
840 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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:Fahad Mukhtar
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

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
 

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 2000 total points
ID: 16892014
Any chance that you will try my solution, wich both compiles and works?
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

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…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
In a question here at Experts Exchange (https://www.experts-exchange.com/questions/29062564/Adobe-acrobat-reader-DC.html), a member asked how to create a signature in Adobe Acrobat Reader DC (the free Reader product, not the paid, full Acrobat produ…
Suggested Courses

618 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