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里就丢失了 我该怎么办呢?
展开
 我来答
syht2000
高粉答主

2014-06-15 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

你这样写当然不行,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]));
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式