确定谁调用事件处理程序

时间:2012-05-30 17:56:49

标签: c# winforms visual-studio-2008 event-handling windows-ce

我的应用程序将我的标签编写为在文本被修改时集中。

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

如果我有这样的代码:

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

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

解决方案感谢您的帮助,这是我第一次尝试使用事件处理程序制作内容并且不知道我需要转发发件人。这解决了我的问题。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

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

只需投射此对象即可访问所有控件的信息。

Label label = sender as Label;

你需要对此有点小心,因为你假设只有Label类型的控件正在引发具有这种处理程序方法的事件。

答案 1 :(得分:1)

这就是sender的用途:

Point p = ((Label)sender).Location;
// adjust p 
label1.Location = p;