calling a event handler within another event handler?

别来无恙 提交于 2019-12-01 04:38:19

问题


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?


回答1:


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



回答2:


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



回答3:


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



来源:https://stackoverflow.com/questions/7186549/calling-a-event-handler-within-another-event-handler

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!