我有一个能够调用.net方法的主应用程序。我的.net方法启动一个显示模态形式的新线程。
现在我的.net方法需要在显示模态窗体时禁用主应用程序中的所有窗口。
我该怎么做?
我在想win32方法“GetWindow”,但后来我需要主应用程序表单的句柄。
在我的示例中,您会看到使用模式对话框调用方法的主应用程序。 当我在打开threadingform-dlg时单击主应用程序时,threadingform-dlg应该闪烁。
答案 0 :(得分:4)
使用表单的ShowDialog()
功能代替Show()
。它将自动生成表单模态。
我不知道它是禁用所有其他窗口还是仅禁用呼叫窗口,请尝试。
答案 1 :(得分:3)
你不应该从一个单独的线程中显示一个模态形式(你甚至不应该从一个线程中显示一个非模态形式)。而是从应用程序的主窗体中显示模式窗体。如果这需要移动你的一些代码,那就这样吧。
答案 2 :(得分:1)
您可以通过访问OpenForms属性来获取应用程序的所有打开窗口。
var forms = Application.OpenForms;
答案 3 :(得分:1)
foreach (Form openedForm in Application.OpenForms) {
if (openedForm.GetType() == FormToClose) {
openedForm.Hide();
}
}