我有一个内置了超时功能的应用程序,它会在一段时间不活动后激活,并提示用户输入密码。
出现此密码屏幕时,有时仍可以读取此窗口后面的一些敏感数据。
理想情况下,我想隐藏或模糊密码对话后面的窗口。但我对其他可能相关的建议持开放态度。
我假设我可以迭代所有打开的窗口并将它们最小化,或者对它们做一些其他时髦的事情以使它们上的数据不可读。
有什么想法吗?
谢谢,丰富
好的,我已经使用以下代码实现了这一点......
foreach (Form f in Application.OpenForms)
{
f.Visible = false;
}
PasswordPrompt.ShowDialog();
PasswordPrompt.Dispose();
foreach (Form f in Application.OpenForms)
{
f.Visible = true;
}
“不透明度”选项不起作用,因为缩略图仍然以完全不透明度显示表单,虽然几乎无法阅读,但并不理想。
@Ginosaji,如果您想发布类似的答案,我会在您的答案旁边给您一个“打勾”,因为您的评论为我指明了正确的方向。
Form.Hide() 是您打算做的最简单的解决方案。实际上,只需将不透明度设置为 0.1 就会隐藏您的表单,以至于只能看到“轮廓的幽灵”。但是,如果您对一些美学展示感兴趣,那么您必须即兴发挥。例如,下面的代码将逐渐使您的表单透明,然后恢复为不透明:
private void frmOpacity_Load(object sender, EventArgs e)
{
this.Opacity = 0;
for (double i = -1; i <= 1; i+= 0.005)
{
this.Opacity = System.Math.Abs(i);
Application.DoEvents();
System.Threading.Thread.Sleep(5);
}
}
如果你对更多这样的想法感兴趣,那么你可以查看我的博文:http: //dot-net-talk.blogspot.com/2013/04/some-windows-forms-magic-in-net.html