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
。有人能帮帮我吗?
您不需要让表单关闭本身,但是您可以设置其可见性或简单地隐藏它(同样适用于显示表单):
消费者的代码:
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
设置表单的可见性。您有两个选择。
- 使用实例变量代替类变量,让事情像现在一样工作。
- 不要处理表单,只使用
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();
问候。