我的应用程序写了标签,以便在修改文本时集中。
为此,我通过事件处理程序调用了一个方法。我想对我的每个标签使用相同的方法,但我不知道如何在调用它的方法中识别哪个标签。
如果我有这样的代码:
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;