我有一个成员变量声明如下:
private Label[] dice = new Label[numberOfDice];
当我尝试在表单上使用标签初始化dice
中的值时,我在此行中收到错误"无法将'字符串'隐式转换为'系统.Windows.Forms.Label'":
dice[i] = dieName;
我知道dieName
是一个字符串,但dice
数组希望我在表单中为其提供实际标签的名称。在我的表单中,我有五个标签,分别名为die1,die2,...,die5。
这是我初始化dice
数组的函数:
private void InitializeLabels()
{
for (int i = 0; i < numberOfDice; i++)
{
string dieName = String.Format("die{0}", i + 1);
dice[i] = dieName;
}
}
我知道我可以这样做:
dice[0] = die1;
dice[1] = die2;
...
dice[4] = die5;
但我想使用一种更干净的方法,如上面的 for 循环。
从错误消息中可以清楚地看出,您正在将字符串类型值( dieName
) 分配给类型为 Label
的变量,因此您遇到了此类错误。我认为您正在尝试设置标签文本的值,如果是这样,您应该使用标签控件的 .Text
属性。如果要为 Label 命名,则意味着您应该使用 .Name
属性,现在您可以查看代码段以实现目标。
for (int i = 0; i < numberOfDice; i++)
{
string dieName = String.Format("die{0}", i + 1);
dice[i].Text = dieName;
dice[i].Name = dieName;
}
试试这个:
private void InitializeLabels()
{
for (int i = 0; i < numberOfDice; i++)
{
string dieName = String.Format("die{0}", i + 1);
dice[i].Text = dieName;
}
}
或者如果它们未初始化
private void InitializeLabels()
{
for (int i = 0; i < numberOfDice; i++)
{
string dieName = String.Format("die{0}", i + 1);
dice[i].Text = new Label{Parent = this,
Text = dieName,
Size = new Size(50,20),
Location = new Point(i * 50, 0)};
}
}