如何在标签名称和其他变量中连接变量的内容?
//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+" ℃";
答案 0 :(得分:5)
<击>
连接值的简洁方法是使用String.Format
lbl_XX_temp.Text= String.Format("The Device {0} has {1} ℃", XX, id_XX_temp);
<强> See MSDN Doc: String.Format() 强>
击> <击> 撞击>
也许,我误解了这个问题。我认为OP希望将string
转换为有效的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);
的WinForms:
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);
答案 1 :(得分:0)
String.Format
实际上比你的问题提出的直接字符串连接表现更差。这可能是一个滴答和纳秒的问题,但String.Format
涉及的开销比仅仅用+ b + c进行字符串连接需要更多的开销。
就个人而言,String.Format
对我来说看起来更干净,但它并不快。
答案 2 :(得分:0)
我会使用一对数组或字典(将它们设置为读者的谚语):
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吗? Silverlight的? WPF?如果是WinForms,请参阅Get a Windows Forms control by name in C#。如果是WPF或Silverlight,请参阅Find WPF control by Name。这里接受的答案还建议使用带字符串键的字典,这与我上面的建议类似。
除非您每秒数千次这样做,否则使用字典的性能优势可能微不足道,在这种情况下,您应该直接使用Find
或FindName
。