开发者

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?


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);
}


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);
}


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜