如何在运行时将参数的原始变量名称作为字符串找到?

时间:2010-07-01 17:23:25

标签: c# .net

我进入Form_Load :

for (int i = 1; i < 10; i++)
            {
                this.Controls["txtPrix"+i].Enter += new EventHandler(DlgFacture_Enter);
            }

我得到了这个活动:

    void DlgFacture_Enter(object sender, EventArgs e)
    {
        this.setTextBoxPrixEnter((TextBox)sender);
    }

在最后一个事件中,我希望能够将TextBox根变量名称(因此txtPrix1打印到txtPrix10)作为字符串,具体取决于哪个调用事件。

怎么办呢?

2 个答案:

答案 0 :(得分:2)

你的意思是姓名属性?

this.setTextBoxPrixEnter(((TextBox)sender).Name);

答案 1 :(得分:0)

不容易。您尝试执行的操作是在运行时打印对象的引用名称。可以有许多对给定对象的引用,因此不可能在摘要中打印一个对象。

您需要做的是使用新方法包装Enter处理程序,该方法捕获变量名称并将其传递。

例如:

var name = "txtPrix"+i;
Controls[name].Enter += (sender,e) => DlgFacture_Enter(name, sender, e);

void DlgFacture_Enter(string name, object sender)
{
    this.setTextBoxPrixEnter((TextBox)sender);
}