我有c#form1创建了随机数并在form2中显示这些数字,我再次在form1中创建新的随机数,当我尝试在第二次显示form2时,我看到第一次创建的数字不是第二次时间(form2中的数据不会更改)。如果有人可以提供帮助,我将不胜感激。 form1和form2的代码是:
//form1
public static int var2;
Form secondForm = new Form2();
private void Form1_Load(object sender, EventArgs e)
{
var2 = RandomNumber(1, 50);
secondForm.Show();
secondForm.Refresh();
Thread.Sleep(2000);
secondForm.Hide();
var2 = RandomNumber(1, 50);
secondForm.Show();
secondForm.Refresh();
}
private int RandomNumber(int min, int max)
{
Random random = new Random();
return random.Next(min, max);
}
//form2
private void Form2_Load(object sender, EventArgs e)
{
this.Invoke(new EventHandler(DisplayText1));
}
private void DisplayText1(object sender, EventArgs e)
{
textBox1.AppendText(" ");
textBox1.AppendText(Form1.var2.ToString());
}
答案 0 :(得分:1)
您需要在Activate事件上调用displyText。表单加载一次不能被调用两次,除非你处理并创建一个新的。
private void Form2_Activate(object sender, EventArgs e)
{
this.Invoke(new EventHandler(DisplayText1));
}
答案 1 :(得分:0)
您没有创建新的Object.You正在打开上一个。试试 new Form2()。show();注意关键字new
答案 2 :(得分:0)
当您执行第二个“secondForm.Show();”时,您正在重用相同的表单。当您调用隐藏/显示时,您正在执行的操作是使表单可见/不可见。要确认这一点,请尝试在Form2_Load中设置断点,并查看它被击中的次数。
如果你提出以下内容:
secondForm = new Form2();
在第二次调用RandomNumber(1,50)之后,你会得到不同的#s。
希望这有帮助,
约翰