在不打开新form2的情况下更新表单2中的数据

时间:2013-04-03 21:37:14

标签: c# winforms updates

我有2个表单,From1和Form2。通过单击按钮,图像将发送到Form2,以便在表单2的pictureBox中显示。

每当我点击按钮时,会打开一个新的Form2并显示图像,但这不是我所追求的。

我希望Form2中的pictureBox中的图像得到更新,并且只有一个Form2(第一次打开)保留。

这是我在Form1中的代码:

Image<Bgr, byte> imResult =DrawMatches(imColor,Points1, imColorPrv,Points2,Indices, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red);
Form2 frmDrawMatchPoints = new Form2(imResult);
frmDrawMatchPoints.Show();

这是我在Form2中的代码:

Image<Bgr, byte> imResult;
public Form2(Image<Bgr, byte> imResult)
{
    InitializeComponent();
    this.imResult = imResult;
}

private void Form2_Load(object sender, EventArgs e)
{
    picBoxMatches.Image = imResult.ToBitmap();
}

2 个答案:

答案 0 :(得分:2)

您可以向Form2添加新方法:

public UpdateImage(Image<Bgr, byte> imResult)
{
    this.imResult = imResult;
    picBoxMatches.Image = imResult.ToBitmap();
}

然后在Form1中你可以这样做:

private Form2 form2;   // Some private field

// Inside the event handler
if (form2 == null)
    form2 = new Form2(imResult);
else
    form2.UpdateImage(imResult);

答案 1 :(得分:1)

将其置于全球范围

public Form2 frmDrawMatchPoints = new Form2();

使用相同参数在Form2中创建新功能以预览图片

public void PreviewPicture(Image<Bgr, byte> imResult)
{
    this.imResult = imResult;
}

在Form1中,您应该只有:

Image<Bgr, byte> imResult =DrawMatches(imColor,Points1, imColorPrv,Points2,Indices, new Bgr(System.Drawing.Color.Yellow), new Bgr(System.Drawing.Color.Red);

frmDrawMatchPoints.PreviewPicture(imResult);
frmDrawMatchPoints.Show();