woodykiddy
woodykiddy

Reputation: 6455

calling a event handler within another event handler?

Here is the short sample code:

private void txtbox1_DoubleClick(object sender, EventArgs e)
{
    button1_Click(object sender, EventArgs e); //can I call button1 event handler?
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show(txtbox1.Text);
}

I wonder if it would be okay to code in the above way?

Upvotes: 5

Views: 29634

Answers (3)

George Duckett
George Duckett

Reputation: 32428

Yes you can do that; an event handler is just another method.

However it might be worth creating a new method that shows the message box, and having both Click event handlers call that:

private void txtbox1_DoubleClick(object sender, EventArgs e)
{
    ShowTextboxMessage();
}

private void button1_Click(object sender, EventArgs e)
{
    ShowTextboxMessage();
}

private void ShowTextboxMessage()
{
    MessageBox.Show(txtbox1.Text);
}

Upvotes: 7

RoccoC5
RoccoC5

Reputation: 4213

An event handler is nothing more than a method, so you can call it like any other.

Upvotes: 1

Roy Goode
Roy Goode

Reputation: 2990

You can do that - although the code you provide can't be compiled. It should look like this:

private void txtbox1_DoubleClick(object sender, EventArgs e)
{
    button1_Click(sender, e);
}

private void button1_Click(object sender, EventArgs e)
{
    MessageBox.Show(txtbox1.Text);
}

But for best practice and code readability, you're probably better off doing this, especially as you are not making use of sender and e:

private void txtbox1_DoubleClick(object sender, EventArgs e)
{
    ShowMessageBox();
}

private void button1_Click(object sender, EventArgs e)
{
    ShowMessageBox();
}

private void ShowMessageBox()
{
    MessageBox.Show(txtbox1.Text);
}

Upvotes: 7

Related Questions