3
當我的應用程序關閉時,我試圖保存我的狀態System::Windows::Forms::Form
。我可以在沒有任何問題的情況下記錄窗口的大小,位置和窗口狀態,但是如果窗口在關閉時被最大化,那麼::Size
成員將記錄窗口的最大化大小。如何獲得表單的非最大化窗口大小?
有什麼方法可以記錄非最大化的大小,還是我需要攔截on-maximize事件並手動記錄它?
當我的應用程序關閉時,我試圖保存我的狀態System::Windows::Forms::Form
。我可以在沒有任何問題的情況下記錄窗口的大小,位置和窗口狀態,但是如果窗口在關閉時被最大化,那麼::Size
成員將記錄窗口的最大化大小。如何獲得表單的非最大化窗口大小?
有什麼方法可以記錄非最大化的大小,還是我需要攔截on-maximize事件並手動記錄它?
這不是現成的,你必須P/Invoke GetWindowPlacement。最好的方法是隻記錄窗口大小,如果窗體處於適當的狀態。例如:
protected override void OnResize(EventArgs e) {
if (this.WindowState == FormWindowState.Normal)
Properties.Settings.Default.WindowSize = this.Size;
base.OnResize(e);
}
GetWindowPlacement,除了偉大的,它記錄WorkingArea位置座標,你不能輕易與ScreenArea座標混合(如果你這樣做,你的窗口將被系統任務欄的高度移動) – EricLaw 2013-05-21 18:55:04
相反而不是在每次調整大小時持續保留這個值,您也可以在關閉時檢查this.WindowState!= FormWindowState.Normal,如果它被最大化或最小化,請改用RestoreBounds屬性。 – EricLaw 2013-05-21 22:00:57
它並不總是持續下去。直到程序調用Save()方法。最好在程序退出時完成。 – 2013-05-21 22:08:49