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(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |