질문은 asked here이지만 제공되는 솔루션은 .NET 4.0/Win7/8.1에서 작동하지 않습니다. 대답은 MaximizeBox를 false로 설정하지 않는 것을 중심으로하지만 다음 코드 조각은 작동하지 않습니다 (즉, 양식이 전체 화면을 커버합니다 (Win7 및 ClassicShell 8.1에서 테스트 됨). 여러 화면에서 작동하고 설정하려면 MaximumSize
doesn이 필요합니다. 양식이 최대화되지 않은 경우 사용자가 두 개의 모니터에 걸쳐 양식 너비를 허용해야하며 BeforeMaximize
이벤트도 걸리지 않으므로 OnMove
이벤트에서 MaximumSize
을 간단히 설정할 수 없습니다.최대화 된 경계없는 양식 작업 표시 줄
public TestForm()
{
InitializeComponent();
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
}
VS2013 작업 표시 줄을 포함하지 않고 그냥 할 수있을 것으로 보인다
편집 :. 설정 MaximizedBounds을 (로 Hans Passant가 응답 함) 보조 화면이 기본보기보다 큰 보조 화면에서는 작동하지 않습니다. (참고 : 다음은 Hans의 답변이 수정 된 버전으로 보조 화면에서는 작동하지 않습니다.)
예 :
protected override void OnLocationChanged(EventArgs e)
{
var workArea = Screen.FromControl(this).WorkingArea;
MaximizedBounds = new Rectangle(0, 0, workArea.Width, workArea.Height);
Debug.WriteLine(MaximizedBounds);
base.OnLocationChanged(e);
}
// Button click event (hit when form maximized):
WinApi.RECT rect;
WinApi.GetWindowRect(Handle, out rect);
Debug.WriteLine(rect);
출력 :
OnLocationChanged: {X=0,Y=0,Width=1920,Height=1040}
ButtonClick when form is maximized: {Left=1366,Top=-216,Right=3840,Bottom=876}
이 될 밖으로 작동 :
극대화 폭 = 3840-1366 = 2474
극대화 높이 = 876를 + 216 = 1092
프레임 워크에서이 수치를 얻은 곳은 어디입니까? 당신의 국경 창이 작업 표시 줄을 포함하는 경우
는 가장 높은 투표 대답에서, 당신의 위의 코드에 한 번 더 라인을 추가 공장. 'MaximumSize = Screen.FromControl (this) .WorkingArea.Size;' –
'MaximumSize'가 다중 모니터에서 작동하지 않는 이유를 설명하기 위해 질문을 편집했습니다. –
폼의 MaximizedBounds 속성을 할당하십시오. –