2012-03-30 9 views
2

Alles, ich bin über die Hälfte durch eine MDI WinForm-Anwendung und habe angefangen zu testen, was wir bisher auf mehreren verschiedenen Maschinen und ich habe den folgenden Fehler auf allen Computern gefunden (unter Windows 7/Vista). Der Fehler hat mit der TaskBar und dem sichtbar aktiven Zustand der Anwendung zu tun. Dies wird einfacher mit Bildern:Seltsames TaskBar Verhalten mit MDI WinForm App

A. Ich schweben über die Taskleiste bereit zum Start.

Hovering over the application icon (mouse not displayed)

B. ich auf die Anwendung klicken und es startet kein Problem und zeigt in der Taskleiste - alles so weit gut.

Launches with no problem

C vielleicht 3 Sekunden warten und das Symbol verklingt nicht aktiv zu sein, so dass, wenn ich darauf klicke, startet es eine andere Instanz meiner Anwendung, anstatt die eine Wiederherstellung ich gerade geöffnet haben !? Sobald ich auf das Formular klicke und das Formular minimiere und dann wiederherstelle, geht dieses Problem weg !?

Active icon on the Task Bar dies a death

Das ist seltsam, und ich habe keine Ahnung, wie über die Festsetzung es zu gehen. Dies zeigt sich auch bei Verwendung der .exe-Datei zum Starten der Anwendung, wobei die Taskleiste erst angezeigt wird, wenn Sie auf das Hauptformular der Anwendung klicken. Ich bin wirklich ratlos. Wenn jemand eine Vorstellung davon hat, was hier passieren könnte, würde es am meisten geschätzt werden? Vielen Dank für Ihre Zeit.

Hinweis. Ich habe das Problem auf das Formular beschränkt, das hinter anderen offenen Formularen gestartet wird. Ich habe die relevanten Optionen this.TopLevel = true; in den Formularen Shown Ereignis usw. verwendet, aber nichts scheint zu funktionieren ...

Antwort

2

Alle,

Dies wurde von

this.Activate(); 
Zugabe gelöst

im finally Block des Hauptformulars (das übergeordnete MDI-Formulars) Shown Ereignis.

Vielen Dank für Ihre Zeit und Hilfe.

+2

Hmm, das ist ein Workaround, nicht eine Lösung. Sie müssen sich darüber Gedanken machen, es gibt andere Dinge, die schief gehen können, wenn Sie Code wie diesen schreiben müssen.Beginnen Sie mit dem Testen des Windows + L-Schlüssels (Arbeitsstation sperren) und stellen Sie sicher, dass Ihre Benutzeroberfläche nicht blockiert. Verwenden Sie die integrierte Unterstützung für Begrüßungsbildschirme in .NET, wenn dies der Fall ist. –

+0

@HansPassant danke für den Rat. Ich bin unsicher, was das Problem in diesem Stadium sein könnte. Ich habe jetzt viele MDI-Anwendungen entwickelt und bin nicht einmal auf dieses Verhalten gestoßen. Ich werde auf den obigen Rat achten. Wenn "Windows + L" keine Probleme verursacht, kann man davon ausgehen, dass ich außer Kontrolle bin? Ich benutze meinen eigenen Splash-Screen, aber ich habe die Methode vorher ohne Nebenwirkungen verwendet. Nochmals, vielen Dank für den Kommentar, es ist geschätzt ... – MoonKnight

+0

"Ich benutze meine eigenen Splashscreen" ist, was ich vermutete. Es ist ein sehr starker Hinweis, dass Sie über ein echtes Problem tapezieren. –

2

Ich sah ein ähnliches Problem, wo eine Anwendung nicht Fokus beim ersten Start und würde nicht in den Fenstern angezeigt werden 7 Taskleiste, bis Sie darauf geklickt haben, um das Hauptformular zu aktivieren.

Ich war nie in der Lage, die wahre Ursache aufzuspüren, aber das Verschieben der Einstellung der Text-Eigenschaft des Formulars von einer OnLoad-Überschreibung zum Konstruktor machte das Problem weg. Sehr seltsam und es nervt mich immer noch, dass ich nicht weiß, warum es passiert ist.

Nicht sicher, ob dies auf Sie zutrifft, aber ich wäre sehr interessiert zu wissen, ob Sie auch Text außerhalb des Konstruktors setzen.

+0

Danke für die Post. Ich entwickle mich immer noch und war hoffnungsvoll, dass jemand eine feste Lösung hätte und dass dies ein bekanntes Problem wäre. Dies ist möglicherweise nicht der Fall! Während ich in der Entwicklung verlangsame, werde ich einige detaillierte Tests beginnen, die Ihren Vorschlag oben einbeziehen werden. Vielen Dank für Ihre Zeit, ich werde Sie auf dem Laufenden halten. – MoonKnight

+0

Einer dieser ich in der LOAD-Event ist Laden MDI Kinder, ich werde die Bedeutung dieser Prüfung und lassen Sie wissen ... – MoonKnight