C# Can';t在Form2中使用Form1中的int数组

C# Can';t在Form2中使用Form1中的int数组,c#,C#,我在Form1中有一个int数组,我需要在Form2中使用它。但是当我试图使用Form2中的数组值时,它会给我零 private void button1_Click(object sender, EventArgs e) { frm1 = new Form1(); for (int i = 0; i < 26; i++) { label1.Text += frm1.theCode[i]; } } private void按钮1\u单击(

我在
Form1
中有一个int数组,我需要在
Form2
中使用它。但是当我试图使用
Form2
中的数组值时,它会给我零

private void button1_Click(object sender, EventArgs e)
{
    frm1 = new Form1();

    for (int i = 0; i < 26; i++) 
    {
       label1.Text += frm1.theCode[i];
    }
}
private void按钮1\u单击(对象发送者,事件参数e)
{
frm1=新的Form1();
对于(int i=0;i<26;i++)
{
label1.Text+=frm1.theCode[i];
}
}

但是当我在Form1中尝试同样的东西时,效果非常好

private void button5_Click(object sender, EventArgs e)
{
   frm2 = new Form2();

   for (int i = 0; i < 26; i++) frm2.label1.Text += theCode[i]+ " ";

   frm2.Show();
}
private void按钮5_单击(对象发送者,事件参数e)
{
frm2=新形式2();
对于(inti=0;i<26;i++)frm2.label1.Text++=代码[i]+';
frm2.Show();
}


但是我仍然需要使用
Form2
中的数组,而不是
Form1

中的
Form1
中的数组。您必须将int数组声明为静态字段和公共字段,以便从另一个表单访问它

这就是您在
Form1

public static int[] theCode; // should be public and static
这就是在
Form2

private void button1_Click(object sender, EventArgs e)
{
    // no need to create new instance of Form1.
    for (int i = 0; i < 26; i++) 
    {
       label1.Text += Form1.theCode[i]; // use the static field
    }
}
private void按钮1\u单击(对象发送者,事件参数e)
{
//无需创建Form1的新实例。
对于(int i=0;i<26;i++)
{
label1.Text+=Form1.theCode[i];//使用静态字段
}
}

这几乎是肯定的,因为构造函数没有用值填充代码
newform1()
不会在屏幕上为您提供指向当前表单的指针。它创建了一个新的。第一个代码属于什么形式?您正在将值分配给当前表单的
标签1
,而不是
frm1
。在第二种情况下,您实际上是在修改frm2的标签,这就是它工作的原因。第一个代码属于Form2。我应该如何编辑代码以使其正常工作?虽然这样做有效,但需要这样做意味着您已经做得非常错误(这在生产代码/系统中非常容易出错)。更好的做法是将你的逻辑与你的观点分开,并将其传递给他人。