【问题标题】:Change C# Variable Name Dynamically in Loop在循环中动态更改 C# 变量名称
【发布时间】:2011-07-14 12:56:01
【问题描述】:

我正在尝试在 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 循环,因为数组大小是动态的,所以我确切地知道要循环多少次——这只是动态更改变量名称的问题。

【问题讨论】:

  • ASP.NET - 应该在第一篇文章中指定,抱歉。

标签: c# mysql dynamic


【解决方案1】:

您需要有一个循环遍历的TextBoxes 数组。由于 C# 是一种静态类型语言,因此无法实现这一点。

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

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

【讨论】:

  • 他不需要数组。他也可以通过反射或使用FindName 来完成他的任务。
  • 我创建了一个标签和网格视图数组,然后在我的循环中使用了这段代码——这是一种可接受的方式吗? _Labels[i].Text = stringArray[i];_Labels[i].Visible = true;_GridViews[i].Visible = true;
【解决方案2】:

您想更改标签名称以实现哪个目标? 您是否将标签命名为:label1、label2、label3,并且您想更改它们的文本属性?

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

【讨论】:

  • 我想看看你会怎么做。
  • 假设你有一个 asp:panel 和三个标签 [label1, label2, label3]。你可以这样做:panel.Controls.OfType
  • mh,格式错误......我希望你能理解这一点。它让您了解使用 linq 语法可以做什么
猜你喜欢
  • 2021-11-18
  • 2019-01-31
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 2018-12-08
  • 2015-10-01
相关资源
最近更新 更多