确定谁调用事件处理程序
我的应用程序将我的标签编写为在文本被修改时集中化。
为此,我通过EventHandler调用一个方法。 我想对我的每个标签使用相同的方法,但我不知道如何在方法中识别哪个标签调用它。
如果我有这样的代码:
lbl_TextChanged(object sender, EventArgs e) { ..code.. label1.Location = new Point("label's location"); ..more code.. }
然后我从另一个标签再次调用该方法,我怎么能修改那个代码才能知道哪个标签调用它?
解决方案感谢您的帮助,这是我第一次尝试使用事件处理程序进行操作并且不知道我需要强制转发发件人。 这解决了我的问题。
谢谢您的帮助!
事件处理程序签名中的sender
对象是引发事件的控件。
只需转换此对象,即可访问所有控件的信息。
Label label = sender as Label;
你需要对此有点小心,因为你假设只有Label
类型的控件正在引发具有这个处理程序方法的事件。
这就是sender
的用途:
Point p = ((Label)sender).Location; // adjust p label1.Location = p;