如何在标签名称中设置变量
How to set a variable in a labelname
在我的项目中我有 8
dynamic Textbox
es 和 8
dynamic Label
s,它们是在 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
}
}
如果你想枚举相同的循环 TextBox
es:
// 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] ...
在我的项目中我有 8
dynamic Textbox
es 和 8
dynamic Label
s,它们是在 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
}
}
如果你想枚举相同的循环 TextBox
es:
// 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] ...