2011-10-21 3 views
3

응용 프로그램은 .NET 2.0 용으로 컴파일됩니다 (관련있는 경우). 처음 양식은 ShowInTaskbar = false로 생성되며, 작업 표시 줄에 나타나지 않으며 모든 것이 멋집니다. 그러나 특정 작업 (양식의 파일 드래그 및 파일 업로드 시작)이 ShowInTaskbar = true (창 제목/win7 작업 표시 줄 기능 변경으로 진행 상태를 표시하기 위해)로 표시되면 기본 양식이 사라집니다. 이. 쇼(), this.Visible = true - 그들은 도움이되지 않습니다. ShowInTaskbar = false가 실행될 때까지는 양식을 찾을 수 없습니다. 그런 다음 그것은 같은 자리에 나타나 실종 된 것입니다 ... 어떤 아이디어가 일어날 수 있습니까? 때 그것을 전환 ShowInTaskbar = true 내 양식이 사라집니다.

using System.Windows.Forms; 

class Test 
{ 
    static void Main() 
    { 
     Form form = new Form(); 
     Button button = new Button { Text = "Toggle" }; 
     button.Click += delegate { form.ShowInTaskbar = !form.ShowInTaskbar; }; 
     form.Controls.Add(button); 
     Application.Run(form); 
    } 
} 

가 인정 하듯이 깜박하지만 너무 중요하지한다 :

+1

ShowInTaskbar를 변경하면 큰 부작용이 발생하므로 Winforms는 창을 다시 만들어야합니다. 하나의 버그는 Application.OpenForms에서 폼이 사라진다는 것입니다. 결코 눈에 보이지 않는 그것의 들었다. 가능한 예외에 대해서는 출력 창을보십시오. –

답변

1

그것은 나를 위해 작동합니다. 양식을 숨길 수있는 변경 사항의 일부로 해고 될 수있는 이벤트가 있습니까?

+0

내일은 테스트 케이스를 함께 넣어보십시오. 동작을 복제 할 수 있는지 확인하십시오. – marrat

1

응용 프로그램이 ShowInTaskBar = true 및 ... = false 사이에서 사용 중입니까?

응용 프로그램이 메시지에 응답하고 해당 창을 다시 그려야 할 수 있습니다. 따라서 처리량이 많아서 메시지 처리 루프에 제어권을 반환하지 않으면 응용 프로그램이 응답하지 않고 따라서 화면을 업데이트합니다. 너는 모든 것을 끝냈다.

이 경우 Windows.Forms.Timer에서 처리를 중지하거나 다른 스레드 (BackgroundWorker 또는 ThreadPool)를 사용하여 처리 중에 UI가 계속 응답하도록해야 할 수도 있습니다.

+0

이벤트를 잘 처리합니다. 작업 표시 줄 업로드 진행 상황에 표시되도록 만들 때 잘 표시됩니다. – marrat

3

나는이 질문이 1 년 전에 질문되었지만 여전히 Google 검색 결과에서 수시로 팝업된다는 것을 알고 있습니다.

ShowInTaskbar를 설정하면 앞에서와 같이 전체 양식 (또는 이와 비슷한 내용)이 다시 작성됩니다. 입력 필드 나 컨트롤이 리셋 될 것입니다.

필자의 경우 알림 트레이 영역에 내 응용 프로그램을 최소화하려고 할 때 ShowInTaskbar = false를 사용하여 응용 프로그램이 최소화되었을 때 작업 표시 줄에 더 이상 나타나지 않도록했습니다. 응용 프로그램을 FormWindowState.Normal 이전 복원했던 모든 컨트롤을 복원 할 때 문제가 발생합니다.

해결 방법은 ShowInTaskbar = false를 호출하기 전에 양식에서 "this.Controls.Remove (control1)"컨트롤을 모두 제거한 다음 폼에 "this.Controls.Add (control1)"를 다시 추가하는 것입니다. 복원됩니다.

그건 내 작품입니다. 희망은 당신과 다른 사람들을 돕습니다.

+0

힌트를 보내 주셔서 감사합니다. – Oliver

0

"ShowInTaskbar"를 false로 설정할 때 패널이 사라지는 문제가있었습니다. 그런 다음 사실대로 되돌리려 할 때, 패널은 여전히 ​​사라졌습니다. 그것은 패널을 제외하고는 다른 모든 컨트롤이 괜찮 았기 때문에 나를 괴롭혔다. "ShowInTaskbar"가 설정되기 전과 후에 "enabled", "visible"이 모두 true, location 및 size가 동일하게 나타났습니다. 나는이 지위를 가로 질러 왔고 이것은 나를 위해 일한 것이다. 희망은 다른 사람들을 돕는다.

void ShowTaskbarIcon(bool e) 
    { 
     try 
     { 
      mf.Controls.Remove(mf.pnlMain); 
      mf.ShowInTaskbar = e; 
      mf.Controls.Add(mf.pnlMain); 
     } 
     catch (Exception ex) 
     { 
      ec.Get(ex.ToString(), 55, 1); 
     } 
    } 

기본적으로 답변에서 이미 설명한대로 제거하고 추가합니다. 솔루션을 제공하는 데 도움을 주신 모든 분들께 감사드립니다.

관련 문제