2015-08-26 63 views
0

在我的程序中,我目前正在以编程方式在C#中添加各种表单对象。例如,我试图创建一组特定的面板,其中包含我希望显示的数据。加载表单时,我有一个文件,其中包含我希望加载的所有数据,加载本身工作正常,但加载时我需要创建各种表单标签,面板和图像来显示所有必要的数据,并作为这样我需要使用一个单独的名称,但以编程方式制作这些面板和标签。如何将一个interator号码添加到变量名称?

for (int i=0; i<fileLength; i++) 
{ 
    Panel pnl = New Panel(); 
    pnl.Name = "pnl1"+i; 
    //Set the other properties here 
} 

我想要做的,如果使用迭代器来追加当前迭代到名称的末尾。我正确的方式吗?或者我应该做一个不同的方法?

+0

'Name'是不相关的变量名的字符串属性。不是唯一的,不是固定的,只是一个属性。 – TaW

回答

1

您不能在运行时更改变量/对象名称。如果您想针对对象编写代码,则需要保留对该对象的引用。在您的情况下,您已更改PanelName财产,但仍然必须将其用作pnl,而不是pnl0pnl1

这样做的另一种方法是使用带有键的Dictionary作为您指定的名称并将其作为对象本身的值。这将帮助您使用您分配给它的名称访问您的控件。

Dictionary<string, Panel> panels = new Dictionary<string, Panel>(); 
for (i = 0; i <= 10; i++) { 
    Panel pnl = new Panel(); 
    panels.Add("pnl" + i.ToString(), pnl); 
} 
//write code against panels 
panels("pnl0").Width = 100; 

For循环中访问:

foreach (string pnlName in panels.Keys) { 
    panels(pnlName).Visible = true; 
} 

for (i = 0; i <= 10; i++) { 
    panels("pnl" + i).Visible = true; 
} 
+0

所以,如果我想访问这个新的面板内的for循环,我想使用:面板(“pnl”+ i.ToString())。 或者会有更好的方法来做到这一点? – Rhydis

相关问题