вызывать обработчик событий в другом обработчике событий? - PullRequest
4 голосов
/ 25 августа 2011

Вот краткий пример кода:

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

Интересно, можно ли было бы кодировать вышеуказанным способом?

Ответы [ 3 ]

7 голосов
/ 25 августа 2011

Вы можете сделать это - хотя предоставленный вами код не может быть скомпилирован.Это должно выглядеть следующим образом:

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

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

Но для лучшей практики и читабельности кода вам, вероятно, лучше делать это, особенно если вы не используете sender и 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);
}
4 голосов
/ 25 августа 2011

Да, вы можете сделать это;обработчик событий - это просто еще один метод.

Однако, возможно, стоит создать новый метод, который отображает окно сообщения, и оба обработчика события Click вызывают:

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);
}
2 голосов
/ 25 августа 2011

Обработчик событий - не более чем метод, поэтому вы можете вызывать его как любой другой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...