2010-06-21 74 views
0

我正在使用c#的Windows應用程序中工作。我的應用程序共有5種形式。 我的程序控制了所有5種形式來阻止用戶出於不同的原因,他們是 根據我的程序收到的UDP消息調用。 只有一種形式會一次起來。我想要的所有表單的行爲,如 它應該阻止整個屏幕,用戶不應該能夠通過形式 直到我的程序收到特定的UDP消息。 [這是Kiosk應用程序和用戶 從使用Alt + Tab鍵和任務管理器阻塞]阻止用戶使用Windows窗體 - c#

的問題是,在全屏模式下的一些應用parrelley迫使自己的狀態去 落後。情況並非如此。

我試着用SetWindowPos功能,但沒有幫助。

要做到這一點的其他方法是什麼?

回答

0

您可能需要查看WinAPI以控制所有其他窗口。當你的程序需要在前面時,你可能需要捕獲所有的系統鍵盤事件,同時也要枚舉打開的窗口並使它們最小化。

如果這些功能需要在本地.NET庫可用,所以一個API的參考是要需要我會感到很驚訝。

+0

我用SetWindowPos窗口API已經嘗試過被禁用 – Anuya 2010-06-21 08:35:54

1

是的,如果你禁用所有你的窗口,這是預期的行爲。 Windows會繼續尋找另一個窗口來設置焦點,並在必要時選擇另一個應用程序的窗口,並將該窗口設置爲前景窗口。你的窗戶將消失在它後面。

窗體的最頂層的屬性設置爲true不是一個真正的解決,你還是會輸,如果另一個應用程序的窗口是最頂層的爲好。真正的解決方法是不將表單的Enable屬性設置爲False,而是禁用該表單上的控件。最簡單的方法是在該表單上放置一個面板,並將所有控件移到該面板上。將其Dock屬性設置爲Fill。將面板的啓用屬性設置爲False,所有控件也將被禁用。但不是窗戶。

順便說一句:不要使用UDP 重要消息。

0

也許你可能會有一個表單,如「等待X」或類似的東西,沒有關閉按鈕等,並在需要時作爲應用程序模式對話框彈出,這樣可以避免所有窗口的問題該應用程序,而在同一時間提供反饋,以爲什麼他不能做任何事情,用戶