0

在我的应用程序中,我有两个 winform。第一个用作我的控制面板,第二个用作屏幕截图。但是,当我从 Winform 2 回到 Winform 1 时,我创建了一个新的 winform 和一个全新的托盘图标。这是我在程序首次启动时创建的初始文件之上的。

当我从 winform 1 转到 winform 2 时,我执行以下操作:

 this.Hide();
 Form2 form2 = new Form2();
 form2.InstanceRef = this;
 form2.Show();

然后,当我想从 Winform 2 回到 Winform 1 时,我执行以下操作:

 this.Close();
 Winform1 form;
 form = new Winform1 (capturedImageObj);
 form.Show();

我马上就知道问题在于我正在创建一个新的 Winform1,但我需要这样做,以便我可以将 captureImageObj 传递回 Winform 1。

我试过在我的第一段代码中调用this.close()和,但这只会关闭程序。this.dispose()有没有办法可以处理 Winform 1 但仍使用 Winform 2 并将我需要的对象传递回 Winform 1 的新副本?

这是我的 Winform 1 的构造函数:

public ControlPanel(Image imjObj)
{
   InitializeComponent();
   _screenCap = new ScreenCapture();
   _screenCap.OnUpdateStatus += _screen_CapOnUpdateStatus;
   capturedImage = imjObj;
   imagePreview.Image = capturedImage;
}
4

1 回答 1

0

更改 Winform1 以使用如下属性:

public Image CapturedImage {
   get { return imagePreview.Image; }
   set { imagePreview.Image = value; }
}

然后像这样更改您的构造函数:

public ControlPanel(Image imjObj)
{
   InitializeComponent();
   _screenCap = new ScreenCapture();
   _screenCap.OnUpdateStatus += _screen_CapOnUpdateStatus;
    CapturedImage = imjObj;
}

最后,更改您的 Winform2 以执行此操作:

((Winform1)this.InstanceRef).CapturedImage = capturedImageObj;
this.InstanceRef.Show();
this.Close();

根据评论,听起来您的InstanceRef财产是 type Form。将其更改为 type Winform1。或者,我更改了上面的代码来为你做一些转换。

于 2013-08-30T15:33:25.460 回答