2017-04-20 97 views
1

我改變大小,並根據屏幕尺寸形式的最大尺寸和記錄通過輸出/控制檯結果:C#爲什麼表單大小(this.Size)大於表單最大大小(this.MaximumSize)?

Screen scr = Screen.GetWorkingArea(this); 
this.MaximumSize = new System.Drawing.Size(scr.Width, scr.Height); 
this.Size = new System.Drawing.Size(scr.Width, scr.Height); 
Console.WriteLine(this.Size + " " + this.MaximumSize); 

但是,輸出我得到沒有意義(第一輸出。this.Size第二輸出爲this.MaximumSize):

{Width=1680, Height=1050} {Width=1680, Height=1010} 

它是如何的形式,尺寸比最大尺寸更大?

編輯1:我忘記把Screen scr而不是scr

+0

此代碼的位置非常重要,我們不能說。但很可能你做得太早。在這一點上,你實際上並沒有設置窗體大小,但是Winforms並不關心ClientSize。實際的外部窗體大小取決於邊框和標題欄的大小。尤其是後者在很大程度上取決於用戶的喜好。實際大小是在創建窗口時確定的,在此時使用MaximumSize,這是使用Load事件的幾個很好的理由之一。 –

+0

@HansPassant我使用按鈕來最小化最大化和關閉的自定義表單。在這種情況下,我使用了一個單擊事件來觸發表單的大小。 –

+0

當然,這樣做,目標Size是從ClientSize中計算出來的,假定窗口具有標準的鑲邊。當窗口實際被創建時,這將被整理出來。 –

回答

0

我想出了問題。問題是我正在使用WindowState = FormWindowState.Maximize,這違背了我的身高到窗口的最大尺寸(又名1050)。這是凌駕this.MaximumSize

爲了解決這個問題,我使用了布爾值,當真正修復窗體的大小時。