如何将迭代器编号添加到变量名称?

How to add an interator number to a variable name?

在我的程序中,我目前正在以编程方式在 C# 中添加各种表单对象。例如,我正在尝试创建一组特定的面板,其中包含我希望显示的数据。加载表单时,我有一个文件,其中包含我希望加载的所有数据,加载本身工作正常,但加载时我需要创建各种表单标签、面板和图像来显示所有必要的数据和作为因此我需要使这些面板和标签都具有单独的名称,但要以编程方式进行。

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

如果使用迭代器将当前迭代附加到名称的末尾,我正在尝试做什么。我这样做是对的吗?或者我应该采用不同的方法?

您不能在运行时更改 variable/object 名称。如果您想针对该对象编写代码,则需要保留对它的引用。在您的情况下,您已经更改了 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;

对于循环内访问:

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

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