簡體   English   中英

禁用與當前應用程序相關的所有窗口

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM