2012-05-30 40 views
1

我有我的应用程序与我的标签写入集中时,其文本被修改。确定谁调用事件处理程序

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

如果我有这样的代码:

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

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

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

感谢您的帮助!

+0

复制http://stackoverflow.com/questions/1506815/how-do-i-identify-which-control-generated-the-click-event – eyossi

回答

3

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

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

Label label = sender as Label; 

你确实需要一点点小心,因为你是假设只有Label类型的控制是提高具有这种处理方法事件。

1

这是什么sender是:

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