2017-04-20 10 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 제 2 출력)를 this.MaximumSize이다

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

어떻게 폼 크기는 최대 크기보다 큰 것으로입니까?

편집 1 :scr 대신 Screen scr을 입력하는 것을 잊어 버립니다.

+0

이 코드의 위치는 매우 중요합니다. 그러나 당신이 너무 일찍 그렇게하고 있다는 높은 확률. 어느 시점에서 실제로 폼 크기를 설정하지 않고 있지만 Winforms는 ClientSize에 대해 많은 관심을 가지고 있습니다. 실제 외부 양식 크기는 테두리 및 제목 표시 줄의 크기에 따라 다릅니다. 특히 후자는 사용자 선호도에 크게 의존합니다. 실제 크기는 창을 만들 때 결정됩니다.이 시점에서 LoadSize 이벤트를 사용하는 몇 가지 좋은 이유 중 하나 인 MaximumSize가 사용됩니다. –

+0

@HansPassant 최대화 및 닫기를 최소화하기 위해 버튼을 사용하여 사용자 정의 양식을 만들었습니다. 이 경우 폼의 크기를 트리거하기 위해 클릭 이벤트를 사용했습니다. –

+0

물론 그렇게 할 것입니다. 대상 크기는 창에 표준 크롬이 있다고 가정하고 ClientSize에서 계산됩니다. 창을 실제로 만들면 정렬됩니다. –

답변

0

문제점을 파악했습니다. 문제는 내가 WindowState = FormWindowState.Maximize을 사용하고 있었고이 크기가 내 윈도우의 최대 크기 (별명 1050)에 맞춰져있었습니다. 이것은 this.MaximumSize보다 우선합니다.

문제를 해결하기 위해 저는 사실 일 때 양식의 크기를 고정 할 때 부울을 사용했습니다.