【发布时间】:2016-03-10 21:31:30
【问题描述】:
我是 C# 的新手,花了一整天的时间来解决这个问题,如果这很简单,或者已经在其他地方,我很抱歉!我有两个表单,主要和配置。 Main 加载,并有一个按钮来打开 Config 表单,然后隐藏自身:
private void btnConfig_Click(object sender, EventArgs e)
{
Config config = new Config();
config.Show();
this.Visible = false;
}
它工作得很好,配置表单打开。 Config from 有两个按钮(一个 Save 和一个 Close 按钮)。本质上,两个按钮的最终效果是一样的,关闭Config窗体,重新显示Main窗体,代码如下:
private void btnClose_Click(object sender, EventArgs e)
{
this.Hide();
Main main = new Main();
main.Visible = true;
}
问题是,如果我使用“cross”关闭配置屏幕,配置是“关闭”但不显示 Main,程序继续运行。我试过使用 OnFormClosing 并陷入了一个可怕的循环! Cross 应该和 Save/Close 按钮一样,隐藏 Config 表单并再次打开 Main。
【问题讨论】:
-
当您编写
Main main = new Main();时,您实际上是在创建一个新表单,而不是再次显示Main表单。 -
使用 Form.OnClosing 事件捕获包括 X 在内的所有关闭动作。