从form1多次加载form2

本文关键字:加载 form2 form1 | 更新日期: 2023-09-27 18:02:46

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

从form1多次加载form2

您需要在激活事件上调用displyText。一个表单不能被调用两次,除非你销毁并创建一个新的。

private void Form2_Activate(object sender, EventArgs e)
    {
        this.Invoke(new EventHandler(DisplayText1));
    }

当您执行第二个"secondForm.Show();"时,您正在重用相同的表单。当你调用Hide/Show时,你所做的就是使表单可见/不可见。要确认这一点,请尝试在Form2_Load中设置一个断点,并查看它被击中的次数。

如果您输入以下内容:

secondForm = new Form2();

在第二次调用RandomNumber(1,50)之后,您将得到不同的#s。

希望有帮助,

约翰

您不是在创建新对象。您正在打开前一个。试一试注意关键字new