从win表单阻止屏幕访问

时间:2013-04-03 23:33:33

标签: c# .net windows winforms

我有一个win表单,在执行某个操作后弹出。我希望这个以屏幕为中心,锁定对任何其他窗口的访问,直到窗体关闭。

基本上保持最佳状态,无法访问其他表单。我怎么能这样做?

2 个答案:

答案 0 :(得分: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软件一样的系统范围阻止, 人们可以做到以下几点:

  • 创建一个没有边框的窗口,最大化并使边框(在您的情况下非常大)透明。在这个窗口的中间会有你的伪对话框。

  • 同样,人们会截取屏幕截图并以该格式显示,但如果有的话,你就不会看到屏幕活动。

Workrave阻止活动的示例:

enter image description here

除非您跳过/推迟休息,否则您无法在桌面上执行任何操作。

注意: Workrave是一个帮助恢复和预防重复性劳损(RSI)的程序。该程序经常提醒您进行微停顿,休息时间并限制您达到每日限制。(来自他们的网站)

更新2: 由于Wrokrave是开源的,因此可以浏览代码以了解它们如何实现阻塞系统:http://sourceforge.net/projects/workrave/

答案 1 :(得分:0)

你能用:

YourForm.ShowDialog().

除非关闭当前表单,否则ShowDialog不允许访问背景表单。