在我的情况下,我有面板,但为了说清楚,我将在我的例子中使用按钮。
我有5个(或更多)按钮,我设置了一个事件,例如 - OnMouseHover,所有五个按钮。我如何获得,如果所有事件链接到一个方法,哪一个鼠标悬停
要捕获鼠标悬停的按钮,我尝试使用“this”,但它链接到表单本身。
private void buttonX_MouseHover(object sender, EventArgs e)
{
this.Text = "Test";
}
我希望鼠标悬停在指定按钮上的文本将其文本更改为“Test”,但它只发生在form.Text上。
在我的真实程序中,我有60个面板,我再次使用一个方法对其中任何一个OnMouseHover事件。如何获取鼠标悬停的面板(或上例中的按钮)?
答案 0 :(得分:8)
this
总是引用类实例(表单)。您需要转发发件人:
((Control)sender).Text = "Test";
发件人(通常)是引发事件的实例 - 在使用来自多个控件的相同处理程序时非常有用。
答案 1 :(得分:2)
这总是类,在这种情况下是表单本身。对象“发件人”是神奇的词。如果是按钮,则将其重新投入按钮。由于对象只是一个引用,因此您可以对发送对象进行更改。