c#打开和关闭窗体

本文关键字:窗体 | 更新日期: 2023-09-27 18:04:52

我想显示一个名为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。有人能帮帮我吗?

c#打开和关闭窗体

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

消费者的代码:

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

TTT -class:

public class TTT : Form
{    
    private void button2_Click(object sender, EventArgs e)
    {
        this.Hide();
    }
}
现在在消费者代码中再次调用ttt.Show(),而不是表单类本身。
您也可以使用Form.Visibility设置表单的可见性。

您有两个选择。

  1. 使用实例变量代替类变量,让事情像现在一样工作。
  2. 不要处理表单,只使用Show/Hide选项。

.

选项1:

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();
}

选项2:

不要关闭表单,只需使用hide/show甚至设置Visible属性。

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

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

当事件被触发时,变量创建,然后关闭窗体。

你可以显示它,然后隐藏它,像这样:

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

或关闭:

ttt_local.Close();

问候。