如何将标签名称中的变量内容与其他变量连接起来?
//labels: lbl_01_temp, lbl_02_temp, lbl_03_temp
string XX;
double id_01_temp, id_02_temp, id_03_temp;
lbl_XX_temp.Text= "The Device " +XX+ "has" +id_XX_temp+" ℃";
如何将标签名称中的变量内容与其他变量连接起来?
//labels: lbl_01_temp, lbl_02_temp, lbl_03_temp
string XX;
double id_01_temp, id_02_temp, id_03_temp;
lbl_XX_temp.Text= "The Device " +XX+ "has" +id_XX_temp+" ℃";
连接值的干净方法是使用String.Format
lbl_XX_temp.Text= String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);
也许,我误解了这个问题。我认为 OP 想要将 astring
转换为有效的control
权利?
网站:
string lblSelected = String.Format("lbl_{0}_temp", XX);
Label lbl = (Label)this.FindControl(lblSelected);
lbl.Text = String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);
赢表格:
string lblSelected = String.Format("lbl_{0}_temp", XX);
Control[] ctrl = this.Controls.Find(lblSelected, true);
Label lbl = ctrl[0] as Label;
lbl.Text = String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);
String.Format
实际上,它的性能不如您提出的问题那样的直字符串连接。这可能是滴答声和纳秒的问题,但涉及的开销String.Format
不仅仅是说 a + b + c 进行字符串连接。
就个人而言,String.Format
对我来说看起来更干净,但它并不快。
我会使用一对数组或字典(将它们设置为读者的众所周知的练习):
labels[index].Text = "Device " + (index + 1) + " has temperature "
+ temperatures[index].ToString(formatString) + " ℃";
编辑
从您评论中的代码来看,您似乎想按名称识别标签,并且您将从整数变量中派生名称,如下所示:
for (int i=1; i<=6; i++)
{
Label label = GetLabelForIndex(i);
//do something with the label here
}
所以问题是,你将如何获得给定索引的标签?换句话说, 的实现是GetLabelForIndex(int)
什么?这个问题的答案取决于Label
我们在谈论什么。它来自哪个图书馆?是WinForms吗?银光?WPF?如果是 WinForms,请参阅Get a Windows Forms control by name in C#。如果是 WPF 或 Silverlight,请参阅按 Name 查找 WPF 控件。这里接受的答案还建议使用带有字符串键的字典,这与我上面的建议类似。
除非您每秒执行数千次,否则使用字典的性能优势可能微不足道,在这种情况下您应该直接使用Find
or FindName
。