我正在使用Windows窗體應用程序.NET 3.5。我設置了一個定時器,使得如果沒有活動在一定時間內目前的形式被關閉後用戶返回到默認表「中沒有登錄」,這顯示某些信息,但不允許訪問其他形式。關閉所有打開的WinForms,但只有一個?
Application.OpenForms給我一個名單,讓我關閉可能是打開的大多數形式,但Application.OpenForms似乎意識到只有MDI形式。其中一些MDI表單可能具有MessageBox或其他模式形式。甚至有些情況下模態形式本身具有彈出對話框。
我知道這個怪癖(bug) in Application.OpenForms,我不認爲有任何情況下,在創建了一個Messagebox或其他類似的表單後,屬性會被改變。在任何情況下,這應該隻影響這些表單,所有其他應該仍然在ApplicationOpenForms中列出。
是否有遍歷和關閉任何類型的各種形式的應用程序,除了一個我很在乎一個優雅的方式? (或者嚴格把關,全部關閉,但MDI父然後打開一個我所關心的。)
,我覺得一個'foreach'環路將很好地在這裏工作。 – Brian
這變得非常混亂,特別是當有一個開放的'MessageBox'窗口(即'MessageBox.Show')時。一般情況下,模態形式是有問題的,因爲你不能關閉它們。你必須模擬按下「取消」按鈕,你必須按照正確的順序處理模態形式。準備在這個問題上花費大量的時間。 –
你試圖實現的東西,已經視窗知道怎麼做。並做得很好,非常安全。經過一段時間不活動後,自動工作站鎖定非常簡單。事實上,大多數關心安全性的公司都已經這樣做了。添加你自己的東西不僅很難,它永遠不會像Windows那樣安全。特別是你處理密碼的部分代碼。 –