2013-04-03 54 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