关闭 Windows 窗体后无法重新显示它
本文关键字:显示 新显示 窗体 Windows 关闭 | 更新日期: 2023-09-27 18:31:35
当我单击按钮时,会打开一个表单,但如果表单已经打开,那么应用程序应该显示消息"表单已经打开!"并且不执行任何其他操作。
我的问题是,一旦我关闭窗口 [x],我就无法再次打开表单。
代码如下:
Form2 decript_form = new Form2();
private void button2_Click(object sender, EventArgs e)
{
if (!decript_form.Visible)
decript_form.Show();
else
MessageBox.Show("Form already open!");
}
当按下"关闭"按钮时,您希望它只是"隐藏"表单...您需要使用e.Cancel
来阻止它继续和关闭。
如果您真的想关闭Form2
窗口,而不是在应用程序运行时隐藏它......然后打电话给ReallyClose
....这样关闭就不会被阻止(然后创建一个新decript_form
或将其null
出来)。
(或者decript_form.Dispose()
也会强制真正关闭)
public partial class Form2 : Form
{
private bool m_bReallyClose = false;
public Form2()
{
InitializeComponent();
}
private void Form2_Load(object sender, EventArgs e)
{
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if (!m_bReallyClose)
{
this.Visible = false;
e.Cancel = true;
}
}
public void ReallyClose()
{
m_bReallyClose = true;
this.Close();
}
}
public partial class Form1 : Form
{
Form2 decript_form = new Form2();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (!decript_form.Visible)
decript_form.Show();
else
MessageBox.Show("Form already open!");
}
private void button2_Click(object sender, EventArgs e)
{
decript_form.Dispose(); // or .ReallyClose();
decript_form = new Form2();
}
}
我假设您谈论的是按下 Form2 上的 [x]。在这种情况下,您应该在 Form2() 中处理关闭事件并添加
this.Hide();
到处理程序。即使是关闭的窗口仍然"显示",直到它被隐藏。
class Form2
{
override protected void OnClosing(CancelEventArgs e)
{
Hide();
}
}