如何检查表单是否有任何ShowDialog()表单打开?

时间:2010-05-21 07:35:15

标签: c# winforms multithreading showdialog

我有一个表单MainForm,其中有几个属性/方法可以从另一个线程访问。

在某些时候,我可能会使用ShowDialog()打开一个表单AuxForm,然后当该模态表单打开时,另一个线程仍然会修改MainForm的属性。 这都是期望的。

在从另一个线程访问的其中一个方法中,我需要执行一些代码,但仅当模态AuxForm未打开时。有没有办法检查这个(通过使用.NET WF表单属性)或我需要使用标志变量?

注意:这些属性/方法都不会修改控件(因此不需要调用)。

2 个答案:

答案 0 :(得分:3)

一面旗帜可能是最好的主意。但是,为了传递一些无用的信息,当窗口显示模态对话框时,Window Styles被修改为包含WS_DISABLED,基本上窗口被禁用,因此您可以检查窗口是否被禁用。

答案 1 :(得分:1)

也许this可以帮助...一旦你拥有应用程序的所有打开的窗口,你就可以搜索集合中的目标窗口。您可以通过检查表单的Modal属性来判断表单是否为模态。