c#如何在不同窗体间传动态数组的值
如在Form2中publicpartialclassForm2:Form{publicint[]vegetable=newint[29];publicint[]meat=...
如在Form2中
public partial class Form2 : Form
{
public int[] vegetable = new int[29];
public int[] meat = new int[9];
public int[] main = new int[9];
public int[] fruit = new int[26];
public int[] snack = new int[13];
public int[] sthElse = new int[4];
}
在Form2中对每个数组的每个元素赋值之后我想这些值能在Form4中继续使用
在Form4中有如下代码
public partial class Form4 : Form
{
private void button2_Click(object sender, EventArgs e)
{
Form2 a = new Form2();
MessageBox.Show(Convert.ToString(a.meat[0]));
}
}
但是显示的结果都是0,可能因为动态数组数据到Form4里就丢失了 我该怎么办呢? 展开
public partial class Form2 : Form
{
public int[] vegetable = new int[29];
public int[] meat = new int[9];
public int[] main = new int[9];
public int[] fruit = new int[26];
public int[] snack = new int[13];
public int[] sthElse = new int[4];
}
在Form2中对每个数组的每个元素赋值之后我想这些值能在Form4中继续使用
在Form4中有如下代码
public partial class Form4 : Form
{
private void button2_Click(object sender, EventArgs e)
{
Form2 a = new Form2();
MessageBox.Show(Convert.ToString(a.meat[0]));
}
}
但是显示的结果都是0,可能因为动态数组数据到Form4里就丢失了 我该怎么办呢? 展开
1个回答
展开全部
你这样写当然不行,form4中重新定了form2的实例,它与前面的form2已经不是同一个对象了,最简单的方法,将你form2中数组加上static,也就是
public static int[] vegetable = new int[29];
public static int[] meat = new int[9];
后面都是一样的
这样你在form4中,就可以直接
MessageBox.Show(Convert.ToString(Form2.meat[0]));
注:你定义这多数组可能会有问题,可以考虑这种方式
public partial class Form2 : Form
{
public static Dictionary<string,int[]> mydic=new Dictionary<string,int[]>();
public Form2()
{
InitializeComponent();
mydic.Add("vegetable",new int[29]);
mydic.Add("meat",new int[9]);
mydic.Add("main",new int[9]);
//后面都一样
}
}
这样,在Form4中,可以
MessageBox.Show(Convert.ToString(Form2.mydic["meat"][0]));
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询