单击按钮时,表单会打开,但如果表单已打开,则应用程序应显示消息“表单已打开!”什么都不做
我的问题是,一旦我关闭窗口[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!");
}
答案 0 :(得分:2)
当按下“关闭”按钮时,您希望它只是“隐藏”表单...您需要使用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();
}
}
答案 1 :(得分:0)
我假设你谈到Form2被按下的[x]。这就是你应该在Form2()中处理Closing事件并添加
的情况 this.Hide();
到处理程序。即使是关闭的窗口仍然“显示”,直到它被隐藏。
class Form2
{
override protected void OnClosing(CancelEventArgs e)
{
Hide();
}
}