获取控制调用方法的名称

时间:2010-04-21 10:10:52

标签: c# forms

我的表单有几个数字向上控件。所有这些控件在更改时都调用相同的方法:

    private void SetColors(object sender, EventArgs e)

如何确定哪种控件称为方法?

2 个答案:

答案 0 :(得分:10)

这就是sender参数的用途。

如果您知道时间,可以适当地进行投射:

NumericUpDownControl control = (NumericUpDownControl) sender;

如果它可以是多种类型中的任何一种,您可以使用as和空测试,或is后跟投射。

当然,您只需要转换为包含所需成员的类型 - 例如,您可能只会转换为Control

编辑:假设您只想要名称,并且您知道发件人将始终是某种控件。您可以使用:

private void SetColors(object sender, EventArgs e)
{
    Control control = (Control) sender;
    String name = control.Name;
    // Use the name here
}

答案 1 :(得分:2)

对事件发生的控制存储在变量sender中。你只需要把它重新归还原来的类型。