2013-04-03 53 views
0

我有一個勝利形式,在執行特定操作後彈出。我希望這個在屏幕中居中的位置鎖定對其他窗口的訪問,直到窗體關閉。阻止屏幕訪問獲勝形式

基本上呆在上面,不能訪問其他表格。我怎樣才能做到這一點?

+8

阻止訪問其他形式您的應用程序還是系統範圍?你不能停止'ctrl + alt + del' + kill程序。 – Blorgbeard 2013-04-03 23:36:32

+0

系統範圍,除了ctrl + alt + del – user541597 2013-04-03 23:38:08

+1

http://stackoverflow.com/questions/3999998/how-to-make-a- system-modal-dialog-in-c – 2013-04-03 23:41:11

回答

1

什麼你要找的是一個模式的形式:Displaying Modal and Modeless Windows Forms

Form1 form1 = new Form1(); 
/* Calling ShowDialog instead of Form.Show() will force 
* the user to close that form first */ 
form1.ShowDialog(); 

更新1:

如果你正在尋找一個全系統的阻塞,就像Workrave軟件呢, 一個可以做到以下幾點:

  • 創建一個沒有邊框的窗口,max模仿並使邊界(在你的情況下非常大的邊界)透明。在這個窗口的中間會有你的僞對話框。

  • 同樣,我們會截取屏幕截圖並以此形式顯示它,但如果有一些屏幕活動,則不會看到屏幕活動。 Workrave阻斷活性的

例子:

enter image description here

你不能在您的桌面,除非你跳過/推遲這一休息時間上做任何事情。

備註:Workrave是一個幫助恢復和預防重複性勞損(RSI)的程序。該計劃經常提醒您採取微暫停,休息休息並限制您達到每日限制。(從他們的網站)

更新2: 作爲Wrokrave是開源的,一個可以只通過代碼瀏覽,看看他們是如何實現阻斷系統:http://sourceforge.net/projects/workrave/

+0

這就是我正在使用的,但我需要它是系統範圍。 – user541597 2013-04-03 23:38:43

+2

怎麼樣,像Alt + Tab? – 2013-04-04 02:30:02

+0

但它應該防止所有的鍵盤快捷方式...例如(Win + D)來最小化所有活動窗體和窗口。 – reaz 2013-04-04 02:38:23

0

你可以使用:

YourForm.ShowDialog(). 

的ShowDialog不允許背景的形式被訪問,除非目前的形式被關閉。

+0

我正在尋找系統範圍的解決方案,而不僅僅是應用程序中的表單。 – user541597 2013-04-03 23:38:25

+0

我懷疑這是否可以實現。 – 2013-04-03 23:40:24