如何防止表单在C#中多次打开,同时保持与之前的父表单的连接?

时间:2016-12-25 15:14:19

标签: c# forms formclosing

private void button4_Click(object sender, EventArgs e)
    {
        LogoutQuestion log = new LogoutQuestion(this);
        log.Show();
    }

这是菜单表单中的代码。基本上我想要做的是询问用户是否要退出程序,如果是,则关闭LogoutQuestion表单和父菜单表单。关于如何实现这一目标的任何想法?

namespace Project
{
public partial class LogoutQuestion : Form
{
    Form FormParent = null;
    public LogoutQuestion(Form parent)
    {
        FormParent = parent;
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
        this.FormParent.Close();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}

}

以上是我所说的整个LogoutQuestion表格。任何帮助将不胜感激。 :-)

1 个答案:

答案 0 :(得分:2)

  

使LogoutQuestion成为一个对话框(log.ShowDialog();)这样你也可以   检索用户响应的结果,因为这将返回一个   的DialogResult。

使用ShowDialog,您可以使用表单模式。这意味着它与显示它的父表单相关联。这就像您尝试在其他Windows程序中保存文件时一样。这也意味着用户无法继续其他任何操作,直到此表单关闭为止。这也使您可以选择在表单关闭时使用用户操作的结果。

private void button4_Click(object sender, EventArgs e)
{
    LogoutQuestion log = new LogoutQuestion();
    DialogResult dr = log.ShowDialog();
    if(dr != DialogResult.Cancel)
    {
        this.Close();
    }
}