I have a button with OnClick=Button_Click. I want to call Button_Click from another function but the problem is that I need to give it:
(object sender, EventArgs
You could do this
Button_Click(null,EventArgs.Empty);
although I agree that it's better to extract function that could be called from anywhere.
For example if you have
protected void Button_Click(object sender, EventArgs e)
{
//some list of code
}
this code should be put in some new method and then called from Button_Click or any other method
private void ExtractedMethod()
{
//some list of code
}
protected void Button_Click(object sender, EventArgs e)
{
ExtractedMethod();
}
I recommend you to read a book Refactoring: Improving the Design of Existing Code by Martin Fowler. It's a must on a shelf. You will come back to that book from time to time, it's timeless.
Alternatively, if the action is done primarily by the button, or to avoid extra methods, as of .Net 4.0, there is a function called .PerformClick(). So
Button.PerformClick();
Would execute the button click from inside the code.
Extract the functionality that you have within the "onclick" into another function. You can then call it from anywhere, including the onClick.