2010-05-21 95 views
3

我有一个形式的MainForm与从另一个线程访问的几个属性/方法。如何检查窗体是否有任何ShowDialog()窗体打开?

在某些时候,我可能会用ShowDialog()打开一个窗体AuxForm,然后当模式窗体打开时,另一个线程仍然会修改MainForm的属性。 这是所有需要的。

在从另一个线程访问的方法之一,我需要执行一些代码,但只有当模式AuxForm未打开。有没有什么办法来检查(通过使用.NET WF窗体属性),或者我需要使用一个标志变量?

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

+0

我sorta有同样的问题,我尝试使用IsWindowVisible(IntPtr),并没有工作。 – 2012-06-10 17:17:50

回答

3

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

1

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

+0

太糟糕了我需要这个Windows Mobile,而.NET CF的应用程序没有这样的属性。不管怎么说,还是要谢谢你。 – 2010-05-21 08:31:04