2010-07-01 60 views
1

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根变量名(因此txtPrix1txtPrix10)作为字符串,取决于哪一个调用事件。

如何做到这一点?

回答

2

你的意思是Name属性?

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

这很容易......谢谢:) – Amadeus45 2010-07-01 17:50:30

0

不容易。你试图做的是在运行时输出一个对象的名字。对给定对象可能有很多引用,因此不可能在摘要中打印一个。

你需要做的就是用一个新的方法包装输入处理程序,该方法捕获变量名并传递它。

例如:

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); 
} 
相关问题