我有一个成员变量声明如下:
private Label[] dice = new Label[numberOfDice];
当我尝试使用表单上的标签初始化dice
中的值时,我会收到错误"无法隐式转换' string'到' System.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循环。
答案 0 :(得分:1)
从错误消息中可以清楚地看到,您正在为类型为dieName
的变量分配字符串类型值(Label
),因此您遇到了此类错误。我认为您正在尝试设置标签文本的值,如果是这样,您应该使用Label Control的.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;
}
答案 1 :(得分:0)
试试这个:
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)};
}
}