如何将Bitmap数组从1种形式传递到另一种形式?

时间:2014-01-21 19:47:33

标签: 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);

但是现在,我有一个位图数组,我做同样的方法,它不起作用。我试着这样做:

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);

2 个答案:

答案 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>,以便对输入数据的确切存储方式不确定(也许你会从网上下载它,相对缓慢),然后存储它适合你班级的需要。