簡體   English   中英

結合多種事件方法

[英]Combining Multiple Event Methods

希望重構一些應用程序代碼。 我有一個具有多個相同事件的GUI,可針對不同的標簽,文本框等反映...

例如:

    private void textBox1_Enter(object sender, EventArgs e)
    {
        textBox1.BackColor = Color.LightCyan;
    }

    private void textBox2_Enter(object sender, EventArgs e)
    {
        textBox2.BackColor = Color.LightCyan;
    }

我只是將這些方法分配給Visual Studio中對象屬性上的事件。 有沒有一種有效的方法可以結合多個事件方法來清理代碼? 謝謝!

定義單個事件,例如:

private void textBox_Enter(object sender, EventArgs e)
{
    TextBox textBox = sender as TextBox;
    if (textBox != null)
        textBox.BackColor = Color.LightCyan;
}

然后將該事件分配給所有TextBox Enter事件,例如:

textBox1.Enter += textBox_Enter; //Same event handler
textBox2.Enter += textBox_Enter; //Same event handler

如果兩個事件處理程序執行的邏輯完全相同(如您在此處列出的那樣),則只需創建1個事件處理程序並將其分配給兩個組件即可。

private void TextBox_Enter(object sender, EventArgs e)
{
    TextBox textBox = sender as TextBox;
    if (textBox != null) {
        textBox.BackColor = Color.LightCyan;
    }
}

略微闡述一下,即使您要根據觸發事件的控件執行不同的操作,也可以采用這種方法。

private void textBox_Enter(object sender, EventArgs e)
{
    //Check if the sender is textBox1
    if(ReferenceEquals(sender, textBox1))
    {
        //Perform action on textBox1
    }

    //Check if the sender is textBox2
    if(ReferenceEquals(sender, textBox2))
    {
        //Perform action on textBox2
    }
}

暫無
暫無

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

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