FormWindowState.Maximized的陷阱


MDI父窗體下面有很多子窗體。子窗體打開時都是以FormWindowState.Maximized的屬性打開的,但是結果部分如意,部分奇怪。

先貼上單實例的代碼:

 static TestForm _singleTon;
 public static void ShowSingleTon(FormWindowState windowState = FormWindowState.Maximized, Form parent = null)
 {
     if (_singleTon == null || _singleTon.IsDisposed)
         _singleTon = new ProductSetting(count);
     if (parent != null)//設置父窗口,以及對代理賦值
     {
         _singleTon.MdiParent = parent;
     }
     if (_singleTon.WindowState != windowState) _singleTon.WindowState = windowState;
     if (Setting.SetFrontWindow != null && _singleTon.IsHandleCreated) Setting.SetFrontWindow(_singleTon.Handle);
     _singleTon.Show();
 }

如此,調用TestForm.ShowSingleTon就能顯示出單實例的窗口了。

但是同樣的單實例實現邏輯,幾個窗口最大化的效果卻不一樣,一部分的確是最大化的,另一部分子窗口是初始化的大小,雖然最小化和關閉的按鈕是正常。

對比幾個窗口的其余的代碼,發現出問題的窗口在窗口設計界面,就設置了FormWindowState.Maximized

而正常顯示的窗口這里是默認Normal值。

 

將窗口的maximized還原成Normal之后,問題解決了。

這里只能猜測,WindowState的屬性值在修改時會觸發窗口Size的重新計算,在需要的時候修改這個值,可以得到正確的結果。

症結點很坑爹。以后要更注意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM