C#打开一个Form并关闭它

时间:2016-08-30 06:22:46

标签: c# winforms

我想显示一个名为TTT的表单,所以我尝试了这个:

public static TTT ttt_local = new TTT();

private void button1_Click(object sender, EventArgs e)
{
    ttt_local.Show();
}

然后我想从内部关闭表单,以便ttt_local按下ttt_local中的按钮时自动关闭。这有效,但如果我想重新开启ttt_local,我会得到ObjectDisposedException。有人能帮帮我吗?

4 个答案:

答案 0 :(得分:1)

您不需要让表单 关闭 本身,但您可以设置其可见性或只需 隐藏 它(同样适用于 显示 表单):

消费代码:

var ttt = new TTT();
ttt.Show();

TTT - 等级:

public class TTT : Form
{    
    private void button2_Click(object sender, EventArgs e)
    {
        this.Hide();
    }
}

现在再次在使用者代码中调用ttt.Show(),而不是表单类本身。

另外,您可以使用Form.Visibility设置表单的可见性。

答案 1 :(得分:0)

您有两种选择。

  1. 使用实例变量而不是类变量,让事情就像现在一样。
  2. 不要使用public TTT ttt_local = new TTT(); private void button1_Click(object sender, EventArgs e) { if(ttt_local == null) ttt_local = new TTT(); ttt_local.Show(); } 选项来处理表单。
  3. 选项1:

    hide/show

    选项2:

    不要关闭表单,只需使用Visible或甚至设置foreach ($product->Field()->Data as $data) { $data->delete(); } 属性。

答案 2 :(得分:0)

使用全局变量的原因是什么?您只应将变量定义放在事件函数中:

private void button1_Click(object sender, EventArgs e)
{
    TTT ttt_local = new TTT();
    ttt_local.Show();
}

每当触发事件时,变量都会创建,然后在关闭表单时进行处理。

答案 3 :(得分:0)

你可以展示它然后隐藏它:

ttt_local.Show();
ttt_local.Hide();

或关闭:

ttt_local.Close();

问候。