1

我的应用程序带有我的标签,以便在其文本被修改时集中。

为此,我通过 EventHandler 调用一个方法。我想对我的每个标签使用相同的方法,但我不知道如何在方法中识别哪个标签调用它。

如果我有这样的代码:

       lbl_TextChanged(object sender, EventArgs e)
        {
           ..code..
           label1.Location = new Point("label's location");
           ..more code..
        }

我再次从另一个标签调用该方法,我如何修改该代码才能知道哪个标签调用它?

解决方案感谢您的帮助,这是我第一次尝试使用事件处理程序进行某些操作,但不知道我需要强制转换发件人。这解决了我的问题。

谢谢您的帮助!

4

2 回答 2

3

事件处理程序签名中的sender对象是引发事件的控件。

只需强制转换此对象,您就可以访问所有控件的信息。

Label label = sender as Label;

您确实需要对此小心一点,因为您假设只有类型的控件Label会引发具有此处理程序方法的事件。

于 2012-05-30T17:58:39.610 回答
1

这就是它的sender用途:

Point p = ((Label)sender).Location;
// adjust p 
label1.Location = p;
于 2012-05-30T17:59:01.590 回答