2009-06-10 9 views
8

으로 설정 한 양식이 있습니다.으로 최대화되었지만 어떤 이유로 작업 표시 줄을 무시하고 전체 화면을 최대화합니다. 그게 전형적인가요? 해결 방법이 있습니까?최대화 된 화면이 작업 표시 줄을 무시합니다

이중 모니터 설정 (첫 번째/기본 창에서 작업 표시 줄)을 사용하여 Windows   XP를 실행 중입니다.

+0

는 [하여 ShowInTaskBar] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form입니다. showintaskbar.aspx) 속성을 False로 설정 했습니까? – Shoban

+1

MaximizedBounds 속성을 할당하십시오. –

답변

6

설명에서 빠진 한 가지 - 최대화 버튼을 해제했습니다. 그 속성을 다시 켜는 테스트를 마쳤을 때 작업 표시 줄이 다시 나타났습니다. 분명히 최대화 버튼을 원하지 않는다면 사용자가 애플리케이션 화면 이외의 것을 볼 수 없도록 키오스크 스타일의 애플리케이션을 만들고 있다고 가정합니다. 정확히 내가 원하는 것은 아니지만, 나는 추측한다. 최대화 단추를 다시 활성화하지 않으려면

3

최대화하기 전에 양식 테두리를 없음으로 설정하십시오.

이 코드는 하나의 모니터에서 작동합니다 :이 순간에이를 가지고 있지 않기 때문에

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.FormBorderStyle = FormBorderStyle.None; 
    this.WindowState = FormWindowState.Maximized; 
} 

나는 듀얼 모니터 시나리오를 테스트하지 않았습니다. : P

편집 : 나는 "최대화 화면 작업 표시 줄을 무시"하지 않았다. 무엇이 을 무시합니까?을 무시합니까?

양식이 작업 표시 줄을 덮고 전체 화면을 채우도록 하시겠습니까?

+0

그는 자신의 양식이 전체 화면을 가리고 심지어 원하지 않는 작업 표시 줄을 숨기는 것을 의미합니다. –

+0

추가하려면 폼의 FormBorderStyle 속성을 확인하고 FormBorderStyle.None으로 설정되어 있지 않은지 확인해야합니다. –

3

, 당신은 수동으로 창 크기를 설정할 수 있습니다 :

private void Maximize() 
{ 
    Screen screen = Screen.FromPoint(this.Location); 
    this.Size = screen.WorkingArea.Size; 
    this.Location = Point.Empty; 
} 

(WorkingArea는 응용 프로그램에서 사용할 수있는 화면의 영역입니다, 최대 때 FormBorderStyle.None를 사용하는 경우 작업 표시 줄 및 기타 도구 모음)

+0

작동하지 않습니다 - sysmenu maximize가'Maximize()'메소드를 호출하지 않습니다 –

+1

@ZachSaw 물론, 그렇지 않습니다, 왜 그렇습니까? 자신에게 전화해야하는 방법입니다. –

+0

sysmenu 팝업이있을 때 최대화 상태로 표시되지 않습니다! –

12

을 제외한 다음은 작업 표시 줄을 포함하지 않도록하는 것은 매우 간단하다 :

this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size; 

그것을 w 아마도 다른 경계선 스타일에 효과가있을 것이며 작업 표시 줄을 덮지 않는 양식을 만드는 가장 깨끗한 방법 일 것입니다.

+5

'Screen.PrimaryScreen' 대신'Screen.FromControl (this)'을 사용해야합니다. 사용자가 여러 개의 화면을 가지고있는 경우 컨트롤이 반드시 기본 화면에있을 필요는 없습니다. –

+0

여러 화면에서 작동하지 않습니다. 'OnMove' 이벤트에서'MaximumSize'를 설정하면 최대화되지 않은 모드에서 화면 너비에 제약을받는 양식이 생깁니다 (기본 동작은 아닙니다). –

+1

나를 위해 작동하지 않았다. –

2

작업 표시 줄은 왼쪽, 위, 아래, 오른쪽에 도킹 할 수 있습니다. 양식 작업 표시 줄을 숨길 수 없음으로 양식 테두리 스타일을 설정하면

 

...cut... 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      // set default start position to manual 
      this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 


      // set position and size to the Form. 
      this.Bounds = Screen.PrimaryScreen.WorkingArea; 


     .... 
      InitializeComponent(); 
     } 

...cut... 
0

: 당신이 오버레이 작업 표시 줄없이 최대화 된 창을 원하는 경우에,이 코드를 사용합니다. 이 문제를 해결하려면 수동으로 양식의 MaximumSize를 설정해야합니다. Windows가 작업 표시 줄을 자동 숨김 상태로두면 양식이 숨겨진 작업 표시 줄까지 덮어 버립니다! 이 문제를 해결하려면 최대 크기 높이를 한 픽셀 씩 줄이십시오 (작업 표시 줄이 아래쪽에있는 경우).

 Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _ 
            My.Computer.Screen.WorkingArea.Size.Height - 1) 
3

한 가지는 내가 설명에서 제외 - 낫다고 생각은 최대화 버튼을 해제. 그 속성을 다시 켜는 테스트를 마쳤을 때 작업 표시 줄이 다시 나타났습니다. 분명히 최대화 버튼을 원하지 않는다면 사용자가 애플리케이션 화면 이외의 것을 볼 수 없도록 키오스크 스타일의 애플리케이션을 만들고 있다고 가정합니다. 정확히 내가 원하는 것은 아니지만, 나는 추측한다.

제프의 도움으로이 문제를 해결했습니다. 먼저 windowstate를 으로 설정하십시오. MaximizeBox을 비활성화하지 마십시오. 당신이 MaximizeBox가 프로그래밍을해야 비활성화하려면 그런 다음 :

private void frmMain_Load(object sender, EventArgs e) 
{ 
    this.MaximizeBox = false; 
} 
관련 문제