2011-01-04 4 views
5

C#/WPF 프로그램에서 MessageBox를 사용하여 이상한 동작이 발생합니다.MessageBox의 문제

기본 WPF 응용 프로그램을 만들고 단추에 레이블을 몇 개 넣습니다. 여기

버튼의 코드가

예를 클릭 세 번 (일부 라벨을 포함하는 메시지 박스의 순서를) 다음

private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBoxResult result; 
     do 
     { 

      result = MessageBox.Show(this, "Please Click here under", "TestBugMessageBox", MessageBoxButton.OKCancel, MessageBoxImage.Information, MessageBoxResult.None); 
      if (result.Equals(MessageBoxResult.OK)) 
      { 
       result = MessageBox.Show(this, "Is it the first time you see it ?", "TestBugMessageBox", MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.None); 
      } 
     } while (result.Equals(MessageBoxResult.Yes)); 
    } 

을 클릭하고 화면의 중앙에 창을 배치하고, 마지막 시간이 아니며 문제가 표시됩니다 (희망 사항).

메시지 상자는 앱에 표시된 상태로 유지됩니다.

문제가 무엇인지 알려 주실 수 있나요?

+0

은 나를 위해 정상적으로 작동합니다 ... – BrokenGlass

+0

사실 저는 이것을 컴파일하기 위해 Visual Studio를 실행 시켰고, 문제가 무엇인지 말할 수 없었습니다. 그래서 우리에게 말해야 할 것처럼 보입니다. 클릭을 조합하여 화면에 머무르게 할 수는 없습니다. –

+0

저도 괜찮아요. 힌트를 주시겠습니까? – TheEvilPenguin

답변

0

.NET 4.0 C#/WPF를 사용하는 Visual Studio 2010의 Windows 7 64 비트 멀티 모니터 시스템에서이 작업을 시도해 보았지만 정상적으로 실행되었습니다.

유일한 차이점은 MessageBox.Show가 'this'객체를 사용하지 않는다는 것입니다.

System.Windows.MessageBox를 사용하고 있습니까?

아마도 .NET Framework의 Windows 업데이트 및/또는 재설치가 필요합니다.

1

do..while 루프에서 디버깅을하고 중단 점을 유지하고 있습니까? 대답이 "예"이면 중단 점을 제거해야합니다. 주 스레드에서주기를 잠그면 wpf가 창의 표면을 다시 그릴 수 없습니다.

편집 : do..while 디버깅 및 중단 점도 설명 된 동작을 재현 할 수 없습니다. 내가 얘기 한 문제는 UI 스레드를 중지 할 때 (예 : Measure || Arrange 메서드를 재정의하고 디버깅 할 때)가 아니라 주 스레드입니다. 죄송합니다.