如何正确使用“this”来访问表单控件?

时间:2009-06-23 10:28:15

标签: c# .net winforms events

在我的情况下,我有面板,但为了说清楚,我将在我的例子中使用按钮。

我有5个(或更多)按钮,我设置了一个事件,例如 - OnMouseHover,所有五个按钮。我如何获得,如果所有事件链接到一个方法,哪一个鼠标悬停

要捕获鼠标悬停的按钮,我尝试使用“this”,但它链接到表单本身。

    private void buttonX_MouseHover(object sender, EventArgs e)
    {
        this.Text = "Test";
    }

我希望鼠标悬停在指定按钮上的文本将其文本更改为“Test”,但它只发生在form.Text上。

在我的真实程序中,我有60个面板,我再次使用一个方法对其中任何一个OnMouseHover事件。如何获取鼠标悬停的面板(或上例中的按钮)?

2 个答案:

答案 0 :(得分:8)

this总是引用类实例(表单)。您需要转发发件人:

((Control)sender).Text = "Test";

发件人(通常)是引发事件的实例 - 在使用来自多个控件的相同处理程序时非常有用。

答案 1 :(得分:2)

这总是类,在这种情况下是表单本身。对象“发件人”是神奇的词。如果是按钮,则将其重新投入按钮。由于对象只是一个引用,因此您可以对发送对象进行更改。