Frage

Ich habe eine MDI-Anwendung. Wenn ich ein Meldungsfeld mit MessageBox.Show zeigen (), verschwindet die gesamte Anwendung hinter all meiner offenen Fenstern, wenn ich das Meldungsfeld schließen.

Der Code tut nichts Besonderes. In der Tat ist hier die Linie, die das Meldungsfeld aus einem MDI-Child-Formular aufruft:

MessageBox.Show(String.Format("{0} saved successfully.", Me.BusinessUnitTypeName), "Save Successful", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly)

Me.BusinessUnitTypeName () ist ein Nur-Lese-Eigenschaft Getter, die einen String zurückgibt, in Abhängigkeit von dem Wert eines Elements veränderbar ist. Es sind keine Nebenwirkungen in dieser Eigenschaft.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Entfernen Sie den letzten Parameter, MessageBoxOptions.DefaultDesktopOnly.

MSDN :

  

DefaultDesktopOnly bewirkt, dass die   Anwendung, die die MessageBox angehoben   zu verlieren Fokus. Die MessageBox, die ist   angezeigt wird nicht visuelle Stile verwenden.   Weitere Informationen finden Sie Rendering   Steuerelemente mit Visual Styles.

Der letzte Parameter ermöglicht die Kommunikation eines Hintergrund-Windows-Dienst mit dem aktiven Desktop durch mittels csrss.exe! Siehe Bart de Smet Blog-Post .

Andere Tipps

Den MessageBoxOptions.DefaultDesktopOnly Parameter und es wird korrekt funktionieren.

DefaultDesktopOnly gibt an, dass " Das Meldungsfeld auf dem aktiven Desktop angezeigt wird", die den Fokus Verlust verursacht.

Diese Antworten sind richtig, aber ich wollte einen weiteren Punkt hinzuzufügen. Ich kam diese Frage über während der Arbeit mit dem Code von jemand anderem. Ein einfaches Meldungsfeld verursacht wurde das vorderste Fenster nach hinten verschieben:

MessageBox.Show ( "Hallo").

Es stellte sich heraus, ein BindingSource.Endedit Befehl vor dem MessageBox war. Die Binding wurde noch nicht auf irgendwelche Steuerungen verbunden, aber es verursacht das Fenster z-Positionen zu ändern.

Ich bin auch nur diese Notiz da meine Suche mich auf diese Frage gebracht, und ich dachte, es könnte jemand anderes hilfreich sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top