2011-01-04 18 views
5

Ich habe seltsames Verhalten mit MessageBox (es) in einem C#/WPF-Programm.Problem mit MessageBox (es)

Erstellen Sie eine grundlegende WPF-Anwendung, legen Sie einige Beschriftungen darauf und eine Schaltfläche. Hier

ist der Code der Schaltfläche klicken

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)); 
    } 

Legen Sie dann die Fenster auf der Mitte des Bildschirms (in der Reihenfolge für die MessageBox einige Etiketten zu decken)

Klicken Sie ja dreimal, und nein das letzte Mal und du wirst das Problem sehen (ich hoffe):

Das Meldungsfeld bleibt in der App angezeigt.

Können Sie mich wissen lassen, was damit nicht stimmt?

+0

verhält sich ganz gut für mich ... – BrokenGlass

+0

Ich habe tatsächlich Visual Studio gestartet, um dies zu kompilieren, und ich kann nicht sagen, was das Problem ist. Es sieht also so aus, als müsstest du es uns sagen. Keine Kombination von Klicks kann dazu führen, dass es auf dem Bildschirm bleibt. –

+0

Gut für mich auch. Kannst du uns einen Hinweis geben? – TheEvilPenguin

Antwort

0

Ich habe gerade versucht, dies auf einem Windows 7 64-Bit-Multi-Monitor-System in Visual Studio 2010 mit .NET 4.0 C#/WPF und es lief gut für mich.

Der einzige Unterschied ist meine MessageBox.Show nimmt nicht das 'dieses' Objekt.

Verwenden Sie System.Windows.MessageBox?

Vielleicht braucht es nur ein Windows Update und/oder eine Neuinstallation des .NET Frameworks.

1

Debuggen Sie und bleiben Sie an einem Haltepunkt in der do..while-Schleife? Wenn die Antwort "Ja" ist, müssen Sie Breakpoints entfernen: wpf kann die Oberfläche Ihres Fensters nicht neu zeichnen, wenn Sie einen Zyklus im Hauptthread sperren.

EDIT: Sogar Debugging und Breakpointing der Do..while war ich nicht in der Lage, beschriebenes Verhalten zu reproduzieren. Das Problem, über das ich sprach, ist nur, wenn ich den UIhread stoppe (zB beim Überschreiben von Measure || Methoden anordnen und debuggen), nicht beim Hauptthread. Es tut uns leid.