0

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

基本上保持在顶部,无法访问其他表格。我怎样才能做到这一点?

4

2 回答 2

1

您正在寻找的是模态表单:显示模态和无模态 Windows 窗体

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

更新 1:

如果您正在像Workrave软件一样寻找系统范围的阻塞,可以执行以下操作:

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

  • 同样,人们会截取屏幕截图并以该形式显示,但如果有一些屏幕活动,您将看不到屏幕活动。

Workrave 阻塞活动示例:

在此处输入图像描述

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

注意:Workrave 是一项有助于恢复和预防重复性劳损 (RSI) 的计划。该程序经常提醒您进行微暂停、休息时间并将您限制在每日限制范围内。(来自他们的网站)

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

于 2013-04-03T23:36:57.467 回答
0

你可以使用:

YourForm.ShowDialog().

ShowDialog 不允许访问后台表单,除非当前表单已关闭。

于 2013-04-03T23:36:42.190 回答