【问题标题】:Identify who invokes Event Handler识别谁调用事件处理程序
【发布时间】:2012-06-05 00:10:17
【问题描述】:

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

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

如果我有这样的代码:

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

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

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

感谢您的帮助!

【问题讨论】:

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


【解决方案1】:

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

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

Label label = sender as Label;

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

【讨论】:

    【解决方案2】:

    这就是sender 的用途:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多