退出时更改表单上的控件框

时间:2016-03-14 01:04:04

标签: c# winforms

好的,我对Form Controlbox有疑问。我想知道是否可以更改或添加退出按钮在表单上执行的操作。

我可以轻松地最小化,最大化并退出表单没问题。但这就是我所面对的。

我的应用有访问权限登录。登录后,它将转到主窗体。按下后我有一个注销按钮,它会返回到登录表单。

但是,如果按退出按钮,它将退出主窗体,程序仍在运行,但无法启动登录表单。

所以我要做的是,当主表单通过红色X退出时,我希望它进入登录。

我可以走复杂的路线:无边框形式,可移动形式,自定义按钮等等,

我认为更改或添加退出按钮以返回登录表单会更容易。这可能吗?

1 个答案:

答案 0 :(得分:1)

将逻辑从按钮单击事件中移出,转换为单独的方法。

private void button1_Click(object sender, EventArgs e)
{
    OverrideFormExit();
}

private void OverrideFormExit()
{
    // execute the code that was previously in button1's click event
}

现在,您可以为Form的Closed事件订阅相同的方法,以便在用户关闭Form时执行。

例如,将以下内容放在Form的构造函数中:

FormClosed += (s, e) => OverrideFormExit();

或者,您可以在实例化主表单时从登录表单中订阅主表单的已结束事件。我猜这里的代码看起来很明显。

private void ShowMainForm()
{
    FormMain frmMain = new FormMain();
    frmMain.Show();
    frmMain.FormClosed += (s, e) => this.Show();
    this.Hide();
}