Auch nicht schön: WindowsFormsParkingWindow
Ist mir vorhin im Visual Studio 2003 'aufgefallen' - nachdem ich ungefähr eine Stunde lang auf meiner Seite nach einem Fehler gesucht habe: Man kann einen Fall erzeugen, bei dem der Wechsel aus der eigenen Anwendung und wieder zurück (per Alt-Tab) dazu führt das die eigenen Anwendung sofort einfriert.
Wer auch so ein Problem hat, der schaut besser einmal kurz in die Taskliste und sucht nach einem WindowsFormsParkingWindow:
Dazu gehört ein unsichtbares Fenster, das man natürlich auch sichtbar machen kann (Spy++ ist dabei das Tool der Wahl). Sichtbar sieht das Ding (beim mir) wie folgt aus:
Und warum bringt das Ding nun die eigene Anwendung zum einfrieren? So ganz im klaren bin ich mir nicht - ich denke aber folgendes erklärt die Sache eingermassen:
Wenn man ein Kontroll-Element von einer Form entfernt, dann wird dieses Control eben im WindowsFormsParkingWindow untergebracht. Sinn der Sache ist wohl, das man das Control dadurch hinterher wieder einfach relativ leicht wiederverwenden kann - falls man es nämlich wieder auf einer Form einfügt.
Das Problem: Wenn das Control Focus hat während es auf die andere Form transferiert wird, dann verbleibt der Focus bei diesem Control. Dummerweise ist die neue 'Parent' Form eben das WindowsFormsParkingWindow - und das ist unsichtbar. Es gibt also keine Events mehr: Die Anwendung ist dann tot.
Lösung: Vor dem entfernen des Controls den Focus auf ein anderes Control - zum Beispiel das Parent des Controls - setzen.
Es wäre natürlich schön gewesen, wenn man bei Microsoft irgendwas zum Thema hätte finden können. Man bekommt aber das hier.