C# 如何将位图数组从一个窗体传递到另一个窗体?
我通常通过这种方法将位图图像从Form1传递到Form2C# 如何将位图数组从一个窗体传递到另一个窗体?,c#,arrays,bitmap,C#,Arrays,Bitmap,我通常通过这种方法将位图图像从Form1传递到Form2 //Code in Form1 Bitmap DataToBePassed; Form2 frm2 = new Form2(DataToBePassed); frm2.Show(); this.Hide(); //Then this on Form2 //Inside Public Form2() Public Form2(Bitmap PassedDataGoesHere); 但是现在,我有一个位
//Code in Form1
Bitmap DataToBePassed;
Form2 frm2 = new Form2(DataToBePassed);
frm2.Show();
this.Hide();
//Then this on Form2
//Inside Public Form2()
Public Form2(Bitmap PassedDataGoesHere);
但是现在,我有一个位图数组,我用同样的方法,它不起作用。我试着这样做:
Bitmap[] ArrayOfDataToBePassed = new Bitmap[size];
Form2 frm2 = new Form2(ArrayOfDataToBePassed);
frm2.Show();
this.Hide();
//In form2
Bitmap[] ArrayOfDataToBePassedGoesHere = new Bitmap[size];
Public Form2(Bitmap ArrayOfPassedDataGoesHere);
至少,一个问题是您需要声明构造函数以接受图像数组。因此,您需要:
public Form2(Bitmap[] ArrayOfPassedDataGoesHere);
试试看它是否有效
注意-另一个观察结果是,在进入构造函数之前,不需要初始化成员变量。因此,以下代码可以正常工作(在“Form2”中):
“readonly”关键字允许您在构造函数中初始化数组,并且在此之后不更改它。这对于不需要更改的变量很有用(这里可能是这种情况?
Form2
需要在其构造函数中包含Bitmap[]
才能接收数组
构造器最好接受
枚举器
,这样就不知道传入数据是如何存储的(也许你会从网上下载,速度相对较慢),然后根据类的需要进行存储。它工作了!谢谢,我弄错了,因为我把这张图做成了“Public Form2(Bitmap[]ArrayOfDataToBePassed=new Bitmap[size]),请注意,我就是这样做的。只是为了缩短我的帖子。不过还是要谢谢你!
private readonly Bitmap []myForm2Bitmaps;
public Form2(Bitmap[] passedImages) {
myForm2Bitmaps = passedImages;
// any other init code here
}