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