我制作新的winform时删除旧的winform和托盘图标

时间:2013-08-30 15:02:48

标签: c# winforms

在我的申请中,我有两个winforms。第一个用作我的控制面板,第二个用于拍摄屏幕截图。但是,当我从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;
}

1 个答案:

答案 0 :(得分: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属性的类型为Form。将其更改为Winform1类型。或者,我更改了上面的代码,为你做了一些演员。