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

时间:2015-03-05 15:12:21

标签: c# winforms

我正在创建一个用于餐馆的应用程序。服务员来到终端并打开会话,然后他为客户输入订单。服务员可能很匆忙,可能会打开会议。我到了计算机的IDLE时间,如果超过10秒,则关闭会话。

我的问题是服务员可以打开对话框弹出窗口,我可以用" this.Close()"关闭主窗体。但我无法关闭对话框弹出窗口。

如何关闭对话框弹出窗口?

这是我的代码,用于侦听IDLE时间

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();
}

1 个答案:

答案 0 :(得分:3)

您应该保留打开的每个Form的列表,以便在关闭主表单时关闭它。

挂上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();
    }
}