c#程序中的新窗口形式

c#程序中的新窗口形式,c#,forms,C#,Forms,我正在尝试通过单击按钮打开一个新的窗口窗体 在主程序的构造函数中,我得到: form_targeting = new Targeting(); 在按钮1_单击(…)中有: form_targeting.Show(); 而ofc在主程序的字段中有 public static Targeting form_targeting; 第一次打开时,它工作正常。关闭第二个窗口并再次按下第一个窗口中的按钮后,我得到错误: 无法访问已释放的对象。对象名称:“目标” 我已将其添加到目标类中,但仍然不起作用:

我正在尝试通过单击按钮打开一个新的窗口窗体

在主程序的构造函数中,我得到:

form_targeting = new Targeting();
在按钮1_单击(…)中有:

form_targeting.Show();
而ofc在主程序的字段中有

public static Targeting form_targeting;
第一次打开时,它工作正常。关闭第二个窗口并再次按下第一个窗口中的按钮后,我得到错误:

无法访问已释放的对象。对象名称:“目标”

我已将其添加到目标类中,但仍然不起作用:

        private void Targeting_FormClosing(Object sender, FormClosingEventArgs e)
            {
                this.Hide();
                e.Cancel = true;
            }
它现在可以工作了,我必须完全使用designer:p编写相同的代码
谢谢大家:)

将代码放入按钮点击事件

button1_Click(...)
{
   form_targeting = new Targeting();
   form_targeting.Show();
}
结束关闭窗体

form_targeting.Close();

将代码放入按钮单击事件中

button1_Click(...)
{
   form_targeting = new Targeting();
   form_targeting.Show();
}
结束关闭窗体

form_targeting.Close();

关闭表单将调用它上的
Dispose
。您需要为事件编写一个处理程序。在该事件中,处理程序调用窗体实例上的
Hide
,并设置
e.Cancel=true
,使窗体不关闭。

关闭窗体调用窗体上的
Dispose
。您需要为事件编写一个处理程序。在该事件处理程序中,对表单实例调用
Hide
,并设置
e.Cancel=true
,以便表单不会关闭。

下面的代码表示,您正在初始化一个来自的目标实例

 form_targeting = new Targeting();
使用以下代码显示表单后
form_targeting.show()
并通过单击交叉按钮或以任何方式关闭表单。第一个表单中初始化为form_目标变量的内存被释放


因此,第二次尝试打开同一个表单时,它会引发错误。

下面的代码表示,您正在初始化一个来自的目标实例

 form_targeting = new Targeting();
使用以下代码显示表单后
form_targeting.show()
并通过单击交叉按钮或以任何方式关闭表单。第一个表单中初始化为form_目标变量的内存被释放


所以第二次,您尝试打开同一个表单,它会引发错误。

当您移动
表单_targeting=new targeting()时会发生什么
点击按钮,不太确定你为什么需要
静态目标定位
你是如何关闭
目标定位
表单的?@Odded我用x(右上角)[at]V4Vendetta关闭它然后它就工作了,但这不是一直在创建新对象吗?@Patryk是的,在这种情况下,您可以
隐藏
,然后再次
向上显示
form@Patryk检查marek提到的内容只需添加对
CloseReason==CloseReason.UserClosing
的检查,然后将表单隐藏在那里,就像
this.hide()
应该为您做的那样。当您移动
form_targeting=new targeting()时会发生什么
点击按钮,不太确定你为什么需要
静态目标定位
你是如何关闭
目标定位
表单的?@Odded我用x(右上角)[at]V4Vendetta关闭它然后它就工作了,但这不是一直在创建新对象吗?@Patryk是的,在这种情况下,您可以
隐藏
,然后再次
向上显示
form@Patryk检查marek提到的内容只需添加对
CloseReason==CloseReason.UserClosing
的检查,然后将表单隐藏在那里,就像
this.hide()
那样,这应该可以为您完成