簡體   English   中英

在另一個事件處理程序中調用事件處理程

[英]calling a event handler within another event handler?

以下是簡短的示例代碼:

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

我想知道以上述方式編碼是否可行?

你可以這樣做 - 雖然你提供的代碼無法編譯。 它應該如下所示:

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

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

但是為了獲得最佳實踐和代碼可讀性,你可能最好不要這樣做,特別是因為你沒有使用sendere

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

是的,你可以這么做; 事件處理程序只是另一種方法。

但是,可能值得創建一個顯示消息框的新方法,並讓兩個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);
}

事件處理程序只不過是一個方法,因此您可以像任何其他方法一樣調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM