C# 从form1多次加载form2

C# 从form1多次加载form2,c#,C#,我创建了带有随机数的c#form1,并在form2中显示这些数字,我再次在form1中创建了新的随机数,当我第二次尝试显示form2时,我看到了第一次创建的数字,而不是第二次(form2中的数据没有更改)。如果有人能帮忙,我将不胜感激。表格1和表格2的代码为: //form1 public static int var2; Form secondForm = new Form2(); private void Form1_Load(object sender, EventArgs e) {

我创建了带有随机数的c#form1,并在form2中显示这些数字,我再次在form1中创建了新的随机数,当我第二次尝试显示form2时,我看到了第一次创建的数字,而不是第二次(form2中的数据没有更改)。如果有人能帮忙,我将不胜感激。表格1和表格2的代码为:

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

您没有创建新对象。您正在打开上一个对象。请重试
新表单2().show();注意关键字new

您需要在激活事件时调用displaytext。表单加载一次不能调用两次,除非您处理并创建一个新表单

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

在执行第二个“secondForm.Show();”时,您正在重用相同的表单。调用“隐藏/显示”时,您所做的只是使窗体可见/不可见。要确认这一点,请尝试在Form2_Load中设置断点,并查看它被命中的次数

如果您将以下内容:

secondForm = new Form2();
第二次拨打RandomNumber(1,50)后,您将得到不同的s

希望这有帮助


John

每次显示form2时,您都必须使用new关键字创建。否则,您将显示第一个关键字,这是唯一创建的关键字