2017-04-20 9 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); 

しかし、私が手出力は意味がありません(第1の出力はありますthis.Size第2の出力は)this.MaximumSizeです。それは、フォームのサイズが最大サイズよりも大きいことである方法

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

EDIT 1:scrの代わりにScreen scrを入れることを忘れてしまいます。

+0

このコードの場所は非常に重要です。わかりません。しかし、あなたはあまりに早くそれをやっているという高い確率があります。どの時点で実際にフォームサイズを設定しているのではないのですが、WinformsはClientSizeについて多くのことを気にしています。実際の外部フォームのサイズは、枠線のサイズとタイトルバーによって異なります。特に後者はユーザの好みに大きく依存する。実際のサイズは、ウィンドウが作成されるときに決定されます。この時点で、LoadSizeイベントを使用するいくつかの理由の1つであるMaximumSizeが使用されます。 –

+0

@HansPassant最大化と最小化を最小限に抑えるためのボタンを使用してカスタムフォームを作成しました。この場合、フォームのサイズをトリガするためにクリックイベントを使用しました。 –

+0

確かに、それはそれを行います、ターゲットサイズは、ウィンドウが標準的なクロムを持っているという前提でClientSizeから計算されます。これは、ウィンドウが実際に作成されるときにソートされます。 –

答えて

0

問題を見つけました。問題は私がWindowState = FormWindowState.Maximizeを使っていて、これが私の高さをウィンドウの最大サイズ(別名1050)にデフォルト設定したことでした。これは、this.MaximumSizeを無効にしていました。

問題を解決するために、真の場合はフォームのサイズを固定するブーリアンを使用しました。

関連する問題