2012-07-19 101 views
0

我试图找出哪些表单以模块方式阻塞父级。确定哪些表单在WinForms中以模态方式重叠父表单

我的环境有点复杂。我有一个AppToolBar(比如任务栏),它是应用程序的主要形式。所有由我自己的工具栏打开的窗体因此是

ShowInTaskbar = False 

因为在我自己的工具栏中显示。同样,应用程序直接运行的所有窗体(通过AppToolBar)都存储在列表中。让我们假设我有Form1,Form2和Form3。 Form 1和Form直接由AppToolBar运行结束,Form3由Form1上创建,然后通过

Form3.ShowDialog(Form1) 

显示在某一时刻,用户最大限度地减少了我的整个应用程序,然后调用

Form1.Hide 
Form2.Hide 

我无法设置Form1的状态最小化,因为它显示为任务栏上方的最小化窗口,因为它不显示在任务栏中。现在Form1应该调用Form3.Hide。那么我怎么能发现,Form3从Form1的角度来阻止Form1呢?

干杯。

+0

隐藏对话框将关闭它。您可以使用Application.OpenForms属性找回表单,并查看谁拥有拥有Owner属性的表单。 – 2012-07-19 17:43:00

+0

@HansPassant我不知道,隐藏将关闭它。谢谢。我必须尽量减少它,但那没关系。 Application.OpenForms正是我正在寻找的。你想创建这个答案?然后我可以接受它作为解决方案。 – 2012-07-19 18:29:00

回答

0

只是为了让这个问题被标记为答案,汉斯没有发布他的解决方案,我会的。

你会通过调用

Application.OpenForms 

,这将给你回一切形式获取所有打开的窗体。要找出Form1的表单块,您只需在所有打开的表单中搜索所有者属性,并返回所有者为Form1的表单。

相关问题