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

本文关键字:winform 删除 托盘图标 | 更新日期: 2023-09-27 18:29:50

在我的应用程序中,我有两个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上,但我需要这样做,这样我才能将我的capturedImageObj传递回Winform1。

在我的第一段代码中,我尝试过调用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;
}

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

更改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类型。或者,我修改了上面的代码,为您做了一些铸造。