2013-03-28 2 views
4

오랫동안 작업하는 동안 사용자 지정 양식을 사용하여 진행률 표시 줄을 표시하는 Windows Forms 응용 프로그램이 있습니다. 이 양식은 현재 내 프로그램의 다른 창과 함께 작업 표시 줄에 표시하도록 설정되어 있습니다. 그러나, 내 응용 프로그램의 다른 윈도우가 해당 응용 프로그램 아이콘을 표시하면서,이 사용자 지정 양식 만 표시 기본 아이콘 :내 자식 폼이 작업 표시 줄에 사용자 지정 아이콘을 표시하지 않는 이유는 무엇입니까?

Default application icon in the taskbar

나는 동일한 아이콘 파일에 나의 다른 모든 창을 디자이너의 아이콘을 설정 사용하지만이 특정 양식에만이 문제가 있습니다. 아이콘은 양식의 캡션에도 올바르게 표시됩니다. 자식 폼의 생성자 나 using 루프에 수동으로 form.Icon = Resources.Sample_Icon;으로 아이콘을 설정하면 아무 효과가없는 것 같습니다.

다음은 문제를 재현 코드 예제입니다 :

// Inside Form1.cs on a button click 
using (var form = new SampleForm()) 
{ 
    form.Show(); 

    for (int i = 0; i < numberOfIterations; ++i) 
    { 
     // Do work here in a real program 

     // This function just calls progressbar.PerformStep(): 
     form.UpdateProgress(); 
    } 
} 

Show()ShowDialog()-않습니다 올바른 아이콘을 표시 변경,하지만 DialogResult를 정말이 상황에서 의미가 없습니다.

결코 처리되지 않는 Windows 작업 표시 줄 아이콘을 설정하는 이벤트 나 메시지가있는 것 같지만, form.Refresh()Application.DoEvents() (그냥 차이가 있는지 확인하기 위해) 던져 넣었을 때 기본 상.

무엇이 누락 되었습니까? ShowDialog가 제대로 작동하는 이유는 무엇입니까?

저는 C# 4.0을 사용하고 있습니다.

+0

나는 이것이 질문에서 산만해질 수 있다고 생각했지만 충분히 흥미롭게도 루프를 사용하여 Microsoft.Office.Interop.Excel.Application을 인스턴스화하면 양식에 아이콘을 표시 할 수 있지만 디스크에서 파일을 읽는 것만으로도 충분합니다. 아니. – Troyen

답변

1

양식이 Show 또는 ShowDialog이라도 부모 양식에서 아이콘을 상속하지 않습니다. 다른 양식의 아이콘을 명시 적으로 변경해야합니다. 단지 양식 자체를 참조

form.Icon = <your icon>; 

또는 다른 형태의 로딩 코드에서 수행 중 하나는 현재 코드에서 그것을 할.

+0

자식 폼 디자이너에서 명시 적으로 설정했습니다. 나는 또한 자식 폼의 생성자와 Show 호출 직후에이 코드 줄을 시도했지만 작동하지 않았다. – Troyen

+0

프로젝트 리소스에 아이콘이 있습니까? – Pietu1998

+0

네,'form.Icon = Resources.Sample_Icon;'(또는 SampleForm의 생성자에 넣으면'Icon = Resources.Sample_Icon;')으로 설정합니다. – Troyen