我正在使用 Windows 窗体应用程序 .NET 3.5。我设置了一个计时器,如果在一段时间后没有活动,则关闭当前表单,并将用户返回到默认的“未登录”表单,该表单显示某些信息但不允许访问其他表单。
Application.OpenForms 给了我一个列表,允许我关闭大多数可能保持打开状态的表单,但 Application.OpenForms 似乎只知道 MDI 表单。其中一些 MDI 表单可能具有 MessageBoxes 或其他模式表单。甚至可能存在模态表单本身具有弹出对话框的情况。
我知道Application.OpenForms 中的怪癖(错误),我不相信在创建 Messagebox 或其他类似表单后会更改属性的任何情况。在任何情况下,这应该只影响那些表单,所有其他表单仍然应该在 ApplicationOpenForms 中列出。
有没有一种优雅的方式来遍历和关闭应用程序中任何类型的每一种形式,除了我关心的那个?(或者严格来说,要关闭它们,除了 MDI 父级,然后打开我关心的那个。)