在循环中动态更改C#变量名称

时间:2011-03-13 17:04:42

标签: c# mysql dynamic

我正在尝试在C#中的MySQLDataReader中启用和重命名标签。如果可能的话,我愿意在循环之外做这个,但是想知道是否有办法动态地改变变量的名称。例如:

while (listNamesREAD.Read())
{
    int i = 0;
    //TextBox1.Text = TextBox1.Text + fieldnames.GetString(0) + ", ";
    stringArray[i] = "List #" + listNamesREAD.GetString(0) + ": " + listNamesREAD.GetString(1);
    list1Label.Text = stringArray[i];
    i++;
}

如果可能的话,我希望代码能够在每次循环时更改list1Label的名称。我对Visual C#相对较新,所以任何帮助都会非常感激。

using (MySqlCommand cmd0 = new MySqlCommand(listNames, conn))
{
    conn.Open();
    listNamesREAD = cmd0.ExecuteReader();
    try
    {
        while (listNamesREAD.Read())
        {
            int i = 0;
            //TextBox1.Text = TextBox1.Text + fieldnames.GetString(0) + ", ";
            stringArray[i] = "List #" + listNamesREAD.GetString(0) + ": " + listNamesREAD.GetString(1);
            list+i+Label.Text = stringArray[i];
            i++;
        }
    }

如果可能的话,我也愿意在DataReader之外完成这项工作。使用普通的while循环,因为数组大小是动态的,所以我确切地知道要循环多少次 - 这只是动态更改变量名的问题。

2 个答案:

答案 0 :(得分:1)

您需要循环播放TextBox个数组。由于C#是一种静态类型语言,因此无法实现这一目标。

您可以使用Controls属性(表单中所有控件的集合)来完成您的需要。您可以通过索引器和控件的名称访问控件:

  this.Controls["label1"].Text = yourText;

答案 1 :(得分:0)

您想更改标签名称以实现目标吗? 你有标签名为:label1,label2,label3,你想改变他们的文字属性吗?

你可以通过使用linq来做到这一点。