我正在创建一个用于餐馆的应用程序。服务员来到终端并打开会话,然后他为客户输入订单。服务员可能很匆忙,可能会打开会议。我到了计算机的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();
}
答案 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();
}
}