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()
那样,这应该可以为您完成