在我的申请中,我有两个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;
}
答案 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
类型。或者,我更改了上面的代码,为你做了一些演员。