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
。
此代碼的位置非常重要,我們不能說。但很可能你做得太早。在這一點上,你實際上並沒有設置窗體大小,但是Winforms並不關心ClientSize。實際的外部窗體大小取決於邊框和標題欄的大小。尤其是後者在很大程度上取決於用戶的喜好。實際大小是在創建窗口時確定的,在此時使用MaximumSize,這是使用Load事件的幾個很好的理由之一。 –
@HansPassant我使用按鈕來最小化最大化和關閉的自定義表單。在這種情況下,我使用了一個單擊事件來觸發表單的大小。 –
當然,這樣做,目標Size是從ClientSize中計算出來的,假定窗口具有標準的鑲邊。當窗口實際被創建時,這將被整理出來。 –