我有一个win表单,在执行某个操作后弹出。我希望这个以屏幕为中心,锁定对任何其他窗口的访问,直到窗体关闭。
基本上保持最佳状态,无法访问其他表单。我怎么能这样做?
答案 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阻止活动的示例:
除非您跳过/推迟休息,否则您无法在桌面上执行任何操作。
注意: Workrave是一个帮助恢复和预防重复性劳损(RSI)的程序。该程序经常提醒您进行微停顿,休息时间并限制您达到每日限制。(来自他们的网站)
更新2: 由于Wrokrave是开源的,因此可以浏览代码以了解它们如何实现阻塞系统:http://sourceforge.net/projects/workrave/
答案 1 :(得分:0)
你能用:
YourForm.ShowDialog().
除非关闭当前表单,否则ShowDialog不允许访问背景表单。