从form1多次加载form2

时间:2011-07-18 18:06:08

标签: c#

我有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());
}

3 个答案:

答案 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。

希望这有帮助,

约翰