Solved

OnClick Variables

Posted on 2011-03-08
4
388 Views
Last Modified: 2012-05-11
Hello, I am using C# to create an ASP.NET website.  Here's my issue:

I have a standard button on one page.  This button has an onclick setup to fire a method.  I have a second button on this page.  When the user clicks on this button, its onclick setup fires another method which does some stuff, BUT at the end of this method, I would like it to fire the first button's onclick method.

Currently when I add the name of the first button's onclick method ( button1_Click() ) to the end of the second button's onclick method, this error is displayed: "No overload method for..takes 0 arguments".

I know what this error means: the system wants me to include two variables when calling button1_click, which are the default:  object sender, EventArgs e

What are object sender, EventArgs e and how do I include them in my call to button1_Click from the button2_click method?

Thank you in advance.
0
Comment
Question by:karlhsc
  • 2
4 Comments
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
ID: 35073996
"Sender" refers to the control that raised the event. "EventArgs" will is an object that contains data about the event, in the case of a button click event eventargs doesn't tell you anything useful. If you want to manually call the method associated with the click event you can safely pass null for both arguments:
button1_Click(null, null);

Open in new window

0
 
LVL 33

Expert Comment

by:Todd Gerbert
ID: 35074096
carl_tawn is absolutely correct, I would only expand on his response slightly to say that it is usually safe to pass null for both arguments - it certainly seems to be the case you could safely do so given your current example, just wanted to point out it's not always safe (99% safe, 1% not safe).

Also, I would suggest moving the code that actually does "stuff" into it's own method(s), and then calling those methods from the button event handlers:
private void Button1_Click(object sender, EventArgs e)
{
  // Button 1 just does stuff.
  DoStuff();
}

private void Button2_Click(object sender, EventArgs e)
{
  // Button 2 does stuff, and also does other stuff
  DoStuff();
  DoOtherStuff();
}

private void DoStuff()
{
  // Do some stuff 
}

private void DoOtherStuff()
{
  // Do some other stuff
}

Open in new window

0
 
LVL 52

Expert Comment

by:Carl Tawn
ID: 35074147
@tgerbert - You are of course correct - just figured it wasn't likely to be an issue in this scenario so skimmed over it :)

Just to expand a little. It is possible to use a single event handler as the target for an event on multiple controls. In a scenario like that you may want to cast "sender" in order to find out which control raised the event and act accordingly.
0
 

Author Comment

by:karlhsc
ID: 35074186
tgerbert: thank you for the additional information.  I see the merit in the architecture you provided.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This Micro Tutorial demonstrates using Microsoft Excel pivot tables, how to reverse engineer competitors' marketing strategies through backlinks.
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…

863 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

26 Experts available now in Live!

Get 1:1 Help Now