【发布时间】:2017-04-20 07:50:52
【问题描述】:
我有一个模态表单,它将执行一些长时间的操作,在该操作期间,用户希望最小化模态表单并在主表单中执行一些其他活动,并且模态表单的进度条显示在主表单状态栏中
当用户点击状态栏时,模态表单应该出现在用户面前。
总结:
- 我们有 Main Winform 和 Child Modal Winform
- 子模态窗体有一些较长的操作,由进度条显示
- 如果用户最小化子窗体。它完全最小化了 Main From
- 但用户只想最小化子窗体并在主窗体中进行一些操作
我尝试了两种方法
-
从最小化事件中隐藏模式。子窗体被隐藏 然后我无法恢复子表单实例将其显示回来 自模态形式的对象被处置以来的主要形式
使用 (Form1 reportForm = new Form1(dbConnection)) { reportForm.ShowDialog(); }
如果我最小化模态表单,它也会最小化主表单。 在一个stackoverflow中提到模态表单被最小化然后主表单也将最小化主表单,这是设计的正确行为。
请给我一个解决这个问题的方法。
【问题讨论】:
-
你说的没有多大意义。显示一些代码,我们不是在编写猴子代码
-
答案显而易见。不要将第二种形式设为模态
-
一个对话框会禁用应用程序中的所有其他窗口。因此,如果您将其最小化,那么用户将无法与之交互的其他窗口。操作系统解决了这个可用性问题,它也最小化了其他窗口。如果你想实现这个要求,你根本不能使用 ShowDialog()。请注意不要让用户再次启动相同的操作。正常的 UI 是状态栏中的进度条,仅在后台操作处于活动状态时才可见。
标签: c# forms winforms modal-dialog