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

如何防止表单在C#中多次打开,同时保持与之前的父表单的连接?,c#,forms,formclosing,C#,Forms,Formclosing,这是菜单表单中的代码。基本上,我想做的是询问用户是否想离开程序,如果是,关闭LogoutQuestion表单和父菜单表单。关于如何实现这一点有什么想法吗 private void button4_Click(object sender, EventArgs e) { LogoutQuestion log = new LogoutQuestion(this); log.Show(); } } 以上是我提到的全部注销问题表格。任何帮助都将不胜感激。:

这是菜单表单中的代码。基本上,我想做的是询问用户是否想离开程序,如果是,关闭LogoutQuestion表单和父菜单表单。关于如何实现这一点有什么想法吗

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

以上是我提到的全部注销问题表格。任何帮助都将不胜感激。:-)

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

通过ShowDialog,可以使表单成为模态。这意味着它与显示它的父窗体绑定。这就像您尝试在其他windows程序中保存文件一样。这也意味着在关闭此表单之前,用户不能继续执行任何其他操作。这还提供了在表单关闭时使用用户操作结果的选项

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成为一个对话框(
log.ShowDialog();
),这样您也可以 检索用户响应的结果,因为这将返回 对话结果

通过ShowDialog,可以使表单成为模态。这意味着它与显示它的父窗体绑定。这就像您尝试在其他windows程序中保存文件一样。这也意味着在关闭此表单之前,用户不能继续执行任何其他操作。这还提供了在表单关闭时使用用户操作结果的选项

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设置为一个对话框(
log.ShowDialog();
),这样您还可以检索用户响应的结果,因为这将返回一个
DialogResult
。您也可以调用应用程序。Exit@VisualVincent问题是如果在菜单中单击注销按钮,带有LogoutQuestion的表单将再次出现,我想做的是确保表单一次只显示一次time@tinstaafl你能解释一下.Show()和.ShowDialog()之间的区别吗?有什么问题吗?似乎您已经编写了所需的代码。将LogoutQuestion设置为一个对话框(
log.ShowDialog();
),这样您还可以检索用户响应的结果,因为这将返回一个
DialogResult
。您也可以调用应用程序。Exit@VisualVincent问题是如果在菜单中单击注销按钮,带有LogoutQuestion的表单将再次出现,我想做的是确保表单一次只显示一次time@tinstaafl你能解释一下.Show()和.ShowDialog()之间的区别吗?