[英]disable all windows that are related with the current application
我有一個能夠調用.net方法的主應用程序。 我的.net方法啟動一個顯示模態形式的新線程。
現在我的.net方法需要在顯示模態窗體時禁用主應用程序中的所有窗口。
我怎樣才能做到這一點?
我在考慮win32方法“GetWindow”,但后來我需要主應用程序表單的句柄。
在我的示例中,您將看到使用模式對話框調用方法的主應用程序。 當我在打開threadingform-dlg時單擊主應用程序時,threadingform-dlg應該閃爍。
使用窗體的ShowDialog()
函數而不是Show()
。 它將自動生成表單模態。
我不知道它是否禁用所有其他窗口或僅禁用呼叫窗口,嘗試。
你不應該從一個單獨的線程中顯示一個模態形式(你甚至不應該從一個線程中顯示一個非模態形式)。 而是從應用程序的主窗體中顯示模式窗體。 如果這需要移動你的一些代碼,那就這樣吧。
您可以通過訪問OpenForms屬性來獲取應用程序的所有打開窗口。
var forms = Application.OpenForms;
foreach (Form openedForm in Application.OpenForms) {
if (openedForm.GetType() == FormToClose) {
openedForm.Hide();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.