C# 如何使用winform中所有打开的对话框关闭mainform

C# 如何使用winform中所有打开的对话框关闭mainform,c#,winforms,C#,Winforms,我正在创建一个用于餐馆的应用程序。服务员来到终端,打开一个会话,然后为客户输入订单。服务员可能会很匆忙,可能会在一个开放的会议结束后离开航站楼。我将进入计算机空闲时间,如果超过10秒,则关闭会话 我的问题是服务员可以打开对话框弹出窗口,我可以用“this.close()”关闭主窗体,但我不能关闭对话框弹出窗口 如何关闭弹出对话框 下面是我的代码,它监听空闲时间 uint idleTime = IdleTimeFinder.GetIdleTime(); TimeSpan timespent = T

我正在创建一个用于餐馆的应用程序。服务员来到终端,打开一个会话,然后为客户输入订单。服务员可能会很匆忙,可能会在一个开放的会议结束后离开航站楼。我将进入计算机空闲时间,如果超过10秒,则关闭会话

我的问题是服务员可以打开对话框弹出窗口,我可以用“this.close()”关闭主窗体,但我不能关闭对话框弹出窗口

如何关闭弹出对话框

下面是我的代码,它监听空闲时间

uint idleTime = IdleTimeFinder.GetIdleTime();
TimeSpan timespent = TimeSpan.FromTicks(idleTime);
int timespent_in_sec = Convert.ToInt32(timespent.TotalMilliseconds * 10000);
if (timespent_in_sec > IdleTime)
{
    //close dialogs if there is one

    this.Close();
}

您应该保留打开的每个
表单的列表,以便在关闭主表单时可以将其关闭

只需钩住
OnClosed
事件并浏览列表:

List<Form> formsToClose = new List<Form>();

public Form1()
{
    InitializeComponent();

    Form f = new Form();
    f.Show();

    formsToClose.Add(f);
}

protected override void OnClosed(EventArgs e)
{
    base.OnClosed(e);

    foreach (Form f in formsToClose)
    {
        f.Close();
    }
}
List formsToClose=new List();
公共表格1()
{
初始化组件();
表格f=新表格();
f、 Show();
formsToClose。添加(f);
}
关闭时受保护的覆盖无效(事件参数e)
{
基础。一旦关闭(e);
foreach(formsToClose中的表格f)
{
f、 Close();
}
}

对话框是否与父级关联?如何打开
对话框
?它们是单独的表单,并且使用
ShowDialog()
显示吗?请查看此问题及其答案: