如何在标签名称中设置变量

How to set a variable in a labelname

在我的项目中我有 8 dynamic Textboxes 和 8 dynamic Labels,它们是在 C# 中创建的。 现在我需要阅读其中的文本并将其插入数据库。

我当前的脚本看起来像

Label labelname1 = this.Controls.Find("label1", false).FirstOrDefault() as Label;
Label labelname2 = this.Controls.Find("label2", false).FirstOrDefault() as Label;
Label labelname3 = this.Controls.Find("label3", false).FirstOrDefault() as Label;
.....

是否有可能创建一个 while 循环 并使用如下变量:

int i = 1;

while (a < 9)
{
    label Labelname+i = this.Controls.Find("label+i" + a, false).FirstOrDefault() as Label;
    i++;
}

当我使用 "labelname+i" 时,不可能,因为它不是 string

谢谢

提取方法然后

 private T FindControl<T>(string name) where T : Control {
   return this
     .Controls
     .Find(name, false)
     .OfType<T>()
     .FirstOrDefault();
 }

并在循环中使用它(看来你想要 for 一个):

 for (int i = 1; i < 9; ++i) {
   Label myLabel = FindControl<Label>($"label{i}");

   if (myLabel != null) {
     //TODO: Put relevant code here
   }
 }

如果你想枚举相同的循环 TextBoxes:

 // textBox1..textBox8
 for (int i = 1; i < 9; ++i) {
   TextBox myTextBox = FindControl<TextBox>($"textBox{i}");

   if (myTextBox != null) {
     //TODO: Put relevant code here
   }
 }

您可以创建标签列表并尝试:

List<Label> labels = new List<Labels>();

for (int i=1;i<9;i++)
{
    Label lbl = this.Controls.Find("label"+i.ToString(), false).FirstOrDefault() as Label;
   labels.Add(lbl);
}

如果您想访问 i 标签,您只需执行以下操作:

labels[i] ...