c# – 标签文本值未设置
|
我有8个标签.我希望每个标签的text属性设置为随机数.由于某种原因,只有第一个标签有一个数字集,为什么会这样? (另外,虽然没有直接相关,如果有更好的方法做label1.Text,label2.Text,label3.Text等,请告诉我!)
谢谢 public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
go();
}
void go()
{
int[] numbers = new int[8];
foreach (int number in numbers)
{
numbers[number] = getRandomNumber();
}
label1.Text = numbers[0].ToString();
label2.Text = numbers[1].ToString();
label3.Text = numbers[2].ToString();
label4.Text = numbers[3].ToString();
label5.Text = numbers[4].ToString();
label6.Text = numbers[5].ToString();
label7.Text = numbers[6].ToString();
label8.Text = numbers[7].ToString();
}
int getRandomNumber()
{
Random random = new Random();
return random.Next(10,1000);
}
}
解决方法
编辑:更多问题
这样做的原因是你以这种方式声明和初始化了一个int []: int[] numbers = new int[8]; 在此之后,您有一个长度为8的数组,但所有的int都是默认值(int),即0. 因此以下的foreach循环…… foreach (int number in numbers)
{
numbers[number] = getRandomNumber();
}
…只会将第一个int初始化为一个随机数(好吧,不是真正随机的,稍后会更多关于此).您可以使用for循环: for (int iii=0; iii<numbers.Length;iii++)
{
numbers[iii] = getRandomNumber();
}
但是,如果您使用我下面的改进代码,也将解决此问题. 在循环中使用相同的随机实例.否则它会创建相同的数字,因为它是以当前时间播种的. MSDN:
Random rnd = new Random();
foreach (int number in numbers)
{
numbers[number] = rnd.Next(10,1000);
}
根据您的第二个问题如何改进代码:您可以使用带有标签的数组: Random random = new Random();
var labels = new[] { label1,label2,label3,label4,label5,label6,label7,label8 };
for (int i = 0; i < labels.Length; i++)
{
labels[i].Text = random.Next(10,1000).ToString();
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
