c#程序中的新窗口表单

时间:2012-04-30 11:07:25

标签: c# forms

我正在尝试按下按钮

打开一个新的窗口表单

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

form_targeting = new Targeting();

在button1_Click(...)中有:

form_targeting.Show();

和ofc在主程序的字段中有

public static Targeting form_targeting;

第一次打开时,它可以正常工作。关闭第二个窗口并再次按下第一个窗口中的按钮后,我收到错误:

  

无法访问已处置的对象。对象名称:'定位'。

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

        private void Targeting_FormClosing(Object sender, FormClosingEventArgs e)
            {
                this.Hide();
                e.Cancel = true;
            }

它现在有效,我必须完全相同但使用设计师:p 谢谢你们:)

3 个答案:

答案 0 :(得分:2)

将代码放入按钮点击事件。

button1_Click(...)
{
   form_targeting = new Targeting();
   form_targeting.Show();
}

结束关闭表格
form_targeting.Close();

答案 1 :(得分:1)

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

答案 2 :(得分:1)

以下代码表示您正在初始化Targeting的实例。

 form_targeting = new Targeting();

使用以下代码form_targeting.Show();显示表单后,单击十字按钮或以任何方式关闭表单。以第一种形式初始化为form_targeting变量的内存将被释放。

所以第二次,你尝试打开相同的表单,它会引发错误。