我有一個內置超時功能的應用程序,它會在一段時間不活動後激活,並提示用戶輸入密碼。發生超時時模糊/隱藏窗口
當出現此密碼屏幕時,有時可能仍會讀取此窗口後面的一些敏感數據。
理想情況下,我想隱藏或模糊密碼對話框後面的窗口。但我願意接受其他可能相關的建議。
我假設我可以遍歷所有打開的窗口並將它們最小化,或者對它們做些別緻的事情來使它們上的數據不可讀。
任何想法的人?
謝謝,豐富
我有一個內置超時功能的應用程序,它會在一段時間不活動後激活,並提示用戶輸入密碼。發生超時時模糊/隱藏窗口
當出現此密碼屏幕時,有時可能仍會讀取此窗口後面的一些敏感數據。
理想情況下,我想隱藏或模糊密碼對話框後面的窗口。但我願意接受其他可能相關的建議。
我假設我可以遍歷所有打開的窗口並將它們最小化,或者對它們做些別緻的事情來使它們上的數據不可讀。
任何想法的人?
謝謝,豐富
好,我已經用下面的代碼實現這...
foreach (Form f in Application.OpenForms)
{
f.Visible = false;
}
PasswordPrompt.ShowDialog();
PasswordPrompt.Dispose();
foreach (Form f in Application.OpenForms)
{
f.Visible = true;
}
的「opactity」選項不起作用,因爲縮略圖仍顯示有完全不透明,這雖然幾乎是不可能的閱讀,是不理想的形式。
@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
-1。 Application.DoEvents()是有史以來最糟糕的解決方案。 – 2013-04-26 20:07:17
同意@HighCore。 DoEvents不僅是一個可怕的想法,在這裏你甚至不需要它。您不需要抽取消息循環來使表單的不透明度發生變化。 – 2013-04-26 23:57:15
這是一個桌面應用程序? (聽起來它,因爲你可以迭代窗口。) – zimdanen 2013-04-26 18:54:35
什麼樣的應用程序? ASP.NET?的WinForms? – GalacticCowboy 2013-04-26 18:54:49
我想最小化可能不是一個好主意 - 例如帶有Aero的Win 7即使是最小化的窗口也會記住縮略圖。 – Martin 2013-04-26 18:56:35