Fragensteller
Problem mit ToolStripManager.RevertMerge

Frage
-
Hallo,
in meinem Projekt befindet sich ein Hauptform und viele UserControls für die Stammdatenerfassung.
Die Controls besitzen alle ein ToolStrip und ein MenuStrip. Wenn ich die Controls in einen Splitter in der Hauptform lade, dann verbinde ich die Strips des Controls mit denen der Hauptform über ToolStripManager.Merge. Wenn die Controls vom User Geschlossen werden oder in den Hintergrund gelangen, dann trenne ich die Strips mit ToolStripManager.RevertMerge.
Funktioniert alles Super.....!
.... Aber leider nur wenn man mit der Maus auf die MenuItems im MenuStrip oder ToolStrip klickt. Wenn ich nachdem einmal ein Control mit RevertMerge getrennt wurde einen Shortcut (Z.B. STR + N für den Menüeintrag "Neu") tippe, dann erhalte ich die Fehlermeldung: Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: "MenuStrip".
Komisch, dass der gleiche Menüeintrag beim klick mit der Maus funktioniert beim Ausführen über den Shortcut aber nicht. Muss ich noch irgendwas aktualisieren? Refresh hat nichts gebracht.
Viele Grüße
Claudia
Alle Antworten
-
Hallo Claudia,
Hast Du SuspendLayout() und ResumeLayout() benutzt? Schau Dir mal folgende Beispiel http://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmanager.aspx
Gruss,
Ionut
Ionut Duma, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip„Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.
-
Hallo Ionut,
ich hab das mal ausprobiert. Hier mein Code.
MenuStripAusControl.SuspendLayout() Me.MenuStrip.SuspendLayout() ToolStripManager.RevertMerge(ToolStrip1, ToolStripAusControl) ToolStripManager.RevertMerge(MenuStrip, MenuStripAusControl) MenuStripAusControl.ResumeLayout() Me.MenuStrip.ResumeLayout()
Wenn die Menustrips neu verbunden werden mit merge habe ich es genauso gemacht.
Trotzdem habe ich leider immer noch das Problem, dass wenn das MenuStrip einmal getrennt und wieder neu verbunden wurde, das Verwenden des Shortcuts zum bereits beschriebenen Absturz führt. Hast du noch eine Idee?
Vielen Dank und Viele Grüße
Claudia
- Bearbeitet Claudia8 Mittwoch, 28. August 2013 10:40
-
Weitere Infos zu dem Problem.....
Ich habe herausgefunden, dass der ToolStripManager mit .Merge und .RevertMerge die MenuStrips in sofern sauber verbindet und trennt, dass bei Klicks auf die Menüeinträge immer das mit der Haupform aktuell verbundene MenuStrip angesprochen wird.
Über den Shortcut erreiche ich aber nur das zu allererst mit .Merge verbundene MenuStrip. Wenn diese nämlich noch nicht verworfen wurde kommt es zu keinem Absturz sondern der Shortcut wird nicht beim aktuell verbundenen sondern bei diesem zuerst verbundenen MenuStrip ausgeführt. Nur wenn dieses erste MenuStrip bereits mit Disposed verworfen wurde kommt es zu dem Absturz.
Ist das ein Fehler von Microsoft oder muss ich um die Shortcuts ebenfalls mit dem ToolStripManager zu handlen noch etwas anderes tun?
Viele Grüße
Claudia
- Bearbeitet Claudia8 Mittwoch, 28. August 2013 13:00