我通常会通过此方法将位图图像从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);
但是现在,我有一个位图数组,我做同样的方法,它不起作用。我试着这样做:
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);
答案 0 :(得分:2)
至少,一个问题是你需要声明构造函数接受一个图像数组。所以你需要:
public Form2(Bitmap[] ArrayOfPassedDataGoesHere);
试一试,看看它是否有效!
注意 - 另一个观察是,在构造函数中之前,不需要初始化成员变量。因此,以下代码将正常工作(在“Form2”中):
private readonly Bitmap []myForm2Bitmaps;
public Form2(Bitmap[] passedImages) {
myForm2Bitmaps = passedImages;
// any other init code here
}
“readonly”关键字允许您在构造函数中初始化数组,而不是在此之后更改它。这对于不需要更改的变量很有用(这可能就是这种情况?)
答案 1 :(得分:0)
Form2
需要在其构造函数中使用Bitmap[]
来接收数组。
最好是让构造函数接受Enumerator<Bitmap>
,以便对输入数据的确切存储方式不确定(也许你会从网上下载它,相对缓慢),然后存储它适合你班级的需要。