2011-01-04 9 views
5

C#/ WPFプログラムでMessageBoxを使用して奇妙な動作が発生しています。MessageBoxの問題

基本的なWPFアプリケーションを作成し、いくつかのラベルとボタンを付けます。ここで

は、ボタンのコードが

[はい]をクリックし3回(いくつかのラベルをカバーするためにはMessageBoxために)すると

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を使用していますか?

多分、Windowsのアップデートや.NETフレームワークの再インストールが必要です。

1

do..whileループでブレークポイントをデバッグしていますか? 答えが "はい"の場合、ブレークポイントを削除する必要があります。メインスレッドでサイクルをロックすると、wpfはウィンドウの表面を再描画できません。

編集: do..whileのデバッグとブレークポイントでも、記述した動作を再現できませんでした。 私が話した問題は、メインスレッドではなく、UIスレッド(例えば、Measure || Arrangeメソッドをオーバーライドしてデバッグするときなど)を停止するときだけです。ごめんなさい。