我有一个程序将飞机发送到不同的目的地,并使用线程实现。但问题是我的飞机在按钮点击时不会以随机颜色生成,它会在程序运行时生成随机颜色。 (我认为这是因为我没有在按钮点击方法中正确传递方法)
问题是如何更改代码,以便在单击按钮时生成随机颜色?
我的代码如下。 (很少有单选按钮会提示用户输入目的地,当点击按钮时,飞机将会运行)
按钮点击实例的代码
private void rbutton1_checked(Object sender, System.EventArgs e)
{
if (((RadioButton)sender).Checked == true)
destination = 1;
}
private void rbutton2_checked(Object sender, System.EventArgs e)
{
if (((RadioButton)sender).Checked == true)
destination = 2;
}
private void rbutton3_checked(Object sender, System.EventArgs e)
{
if (((RadioButton)sender).Checked == true)
destination = 3;
}
private void rbutton4_checked(Object sender, System.EventArgs e)
{
if (((RadioButton)sender).Checked == true)
destination = 4;
}
private void btn_Click(object sender,
System.EventArgs e)
{
if (destination == 0) MessageBox.Show("Select an Option Please!!");
else
{
for (int q = 0; q <1000; q++)
{
locked = !locked;
this.btn.BackColor = locked ? Color.Pink : Color.LightGreen;
lock (this)
{
if (!locked)
Monitor.Pulse(this);
}
}
}
}
我的随机颜色生成代码不在同一个类中(在表单中)
public Color generateRandomColor()
{
Random random = new Random();
Color color = Color.FromArgb(random.Next(255), random.Next(255), random.Next(255));
return color;
}
答案 0 :(得分:1)
在程序加载时创建Random类的实例。然后当用户点击按钮生成随机颜色时,它会给你不同的值。 问题是你总是在创建一个Random类的新实例,并且默认情况下这个对象以相同的种子值开头,因此你总是使用相同的&#34; random&#34;号。
但是,请注意使用代码(在任何语言中),您将只获得伪随机。要获得真正的随机数,您必须拥有特定的硬件。