2014-07-15 3 views
0

양식을 ShowDialog()로 표시하는 다음 코드가 있습니다.MessageBox.Show() ShowDialog 양식 상단에 표시되지 않음

static void Main() 
{ 

    DialogResult oDialogResult = oLogin.ShowDialog(); 

    if (oDialogResult == DialogResult.OK) 
    { 
     try 
     { 
      //do something here 
     } 
     catch (Exception Ex) 
     { 
      MessageBox.Show(Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 
} 

문제 호 MessageBox.Show은 이미 도시 oLogin.ShowDialog() 형태 (위에) 앞의 메일 박스를 도시되지 않은 것이다. 왜 그런지 알아?

다음과 같이 소유자 양식을 포함하도록 MessageBox.Show를 변경해 보았습니다.

MessageBox.Show(oLogin, Ex.Message, "IMPORTANT MESSAGE", MessageBoxButtons.OK, MessageBoxIcon.Error); 

하지만 여전히 동일한 문제가 있습니다.

+1

분명합니다. DialogResult 속성을 할당하기 직전에 oLogin이 이벤트를 발생시킬 수 있습니다. CancelEventHandler 유형의 이벤트는 논리적 선택이므로 대화 상자가 닫히지 않도록 할 수 있습니다. OpenFileDialog.FileOk 이벤트와 비교하십시오. –

답변

0

변경 비주얼 스튜디오 프로젝트 템플릿이 원래 만든 것과 자신의 메인() 메소드의 코드 : -

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); 
Application.Run(oLogin); 

그런 다음,

을 어떤 클래스를 oLogin됩니다에 FormClosing 이벤트 처리기에 try/catch 블록을 추가
-1

시도 :

DialogResult oDialogResult = oLogin.ShowDialog(this); 
+1

'this'를 추가하면이 오류가 발생합니다. '키워드'이 (가) 정적 속성 정적 메소드 또는 정적 필드 초기화 프로그램에서 유효하지 않습니다. ' 위의 코드 부분은 응용 프로그램의 정적 void Main() 메서드에 있습니다. – Tommassiov

+0

미안, 나는 그것이 형식의 내부에 있었지만. – Oscar

1

당신은 당신이 무엇을 설명하지 않습니다 붙여 넣은 코드 - 메시지 박스가 표시되는 시간은, 다른 대화 폐쇄 이미했다 - 그래서에서 표시 할 대화가 없다 앞.

실제 코드를 붙여 넣거나 질문 해보십시오.

+0

네, 그게 문제입니다. 다른 대화 상자가 닫혔지만 왜 그럴까요? – Tommassiov

+0

@ Tommo1977 oLogin에 일부 단추 클릭에 대한 응답으로 양식을 닫는 코드가 있기 때문에? – Oscar

+0

그것이 작동하는 방법이기 때문에. – Emi987