2011-07-28 2 views
0

저는 양식이 있고, 그것에 대해 쇼 대화를하고 있습니다. 그것은 msg 상자와 같습니다. 내가 좋아하는 무언가를하고있다양식이 백그라운드로 들어갑니다.

msgBox = new MsgBox(); 
    if (msgBox.InvokeRequired) 
    { 
     msgBox.Invoke(new ShowMsg(ShowMessage)); 
    } 
    else 
    { 
     ShowMessage(); 
    } 

나는 쇼 대화를하고있다. 그러나 형태는 주요 형태의 배경에 몇 번 간다. 이걸 도와주세요.

+0

? 대리인을 상속하는 유형? –

+1

디버거를 사용하십시오. InvokeRequired가 항상 거짓임을 알 수 있습니다. 아직 표시되지 않은 양식에서 InvokeRequired를 사용할 수 없다는 예외가 발생해야합니다. –

답변

0

무엇 엉망를 사용하려고!

은 Form 클래스에서 파생 된 사용자 정의 유형의 MsgBox입니까? 그렇다면 단순히 ShowDialog 메서드를 호출하여 모달로 표시 할 수 있습니다.

표시 할 수없는 경우 ShowMessage 메서드의 콘텐츠를 공유하십시오.

2

스레드를 사용하고 있습니까?

스레드는 msgbox 자체가 아니라 상위 폼을 호출해야합니다.

Form frm = new Form(); 
if (parent.InvokeRequired) 
{ 
    parent.Invoke(new ThreadStart(() => 
     { 
      frm.ShowDialog(); 
     })); 
} 
else 
{ 
    frm.ShowDialog(); 
} 

스레드가없는 경우 호출을 제거하고 ShowMessage und msgbox의 기능을 약간 설명하십시오.

0

ShowDialog으로 전화하는 방법은 무엇입니까? 기본 창 (또는 하위 창)을 ShowDialog 메서드에 전달해야하므로 적절한 부모 창이 있습니다.

0

아닌 ShowMsg 및 ShowMessage 방법처럼 보이지만,이 밖으로 시도 방법을 잘 : 정확히 ShowMsg 무엇

msgBox = new MsgBox(); 
if (msgBox.InvokeRequired) 
{ 
    msgBox.Invoke((MethodInvoker)delegate() { ShowMessage(); }); 
} 
else 
{ 
    ShowMessage(); 
} 
관련 문제