簡體   English   中英

使用Windows表單阻止用戶-C#

[英]Block User using Windows forms - c#

我正在使用C#在Windows應用程序中工作。 我的申請共有5種形式。 我的程序控制所有5種形式來阻止用戶,因為它們基於我的程序收到的UDP消息而被調用的原因不同。 一次只啟用一種表單。 我想要所有形式的行為,例如“它應該阻止整個屏幕,並且用戶在我的程序收到特定的UDP消息之前,不能通過表單”。 [這是Kiosk應用程序,用戶無法使用Alt + Tab和任務管理器]

問題是,某些處於全屏模式的應用程序parrelley迫使我的表單落后。 事實並非如此。

我嘗試使用SetWindowPos函數,但沒有幫助。

還有另一種方法嗎?

是的,如果禁用所有窗口,則這是預期的行為。 Windows將尋找另一個將焦點設置到的窗口,並且它將在必要時選擇另一個應用程序的窗口,並將該窗口設置為前景窗口。 您的窗戶將消失在它的后面。

將窗體的TopMost屬性設置為True並不是真正的解決方法,如果另一個應用程序的窗口也位於最頂部,您仍然會迷失方向。 真正的解決方法是不要將窗體的Enable屬性設置為False,而是禁用該窗體上的控件。 最簡單的方法是在該表單上放置一個面板並將所有控件移入該表單。 將其Dock屬性設置為Fill。 將面板的Enable屬性設置為False,所有控件也將被禁用。 但不是窗戶。

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

您可能需要研究WinAPI來控制所有其他窗口。 當您的程序需要放在最前面時,您可能需要捕獲所有系統鍵盤事件,同時還要枚舉打開的窗口並將其最小化。

如果這些必需的功能在本機.Net庫中可用,我會感到驚訝,因此將需要一個api參考。

也許您可以使用一個表格來表示諸如“ Waiting for X”之類的內容,或者諸如沒有關閉按鈕之類的內容,並且在需要時作為應用程序模式對話框彈出,這樣可以避免應用程序的所有窗口都出現問題禁用,同時向用戶反饋為什么他無能為力的反饋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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