Guten Abend,
Ich habe folgendes Problem und suche seit gut zwei Tagen vergebens eine Lösung.
Wenn man ein MDI Parent und ein Child hat, kann man einen Menü-Merge machen und so das Menü des MDI Parents verändern.
Jetzt habe ich für meine Anwendungen ein "Base Form". Also eine Grundlagenform, welche ein Menü mit den wichtigsten Einträgen besitzt. Von diesem Form leite ich nun die konkreten Forms ab.
Beispiel:
[BaseForm] <|-- <<inheritance>> -- [Editor]
[BaseForm] <|-- <<inheritance>> -- [Hilfe]
Ich denke es ist klar, dass die Form "Editor" und "Hilfe" noch extra Menüeinträge brauchen. Nun zur Frage: Kann ich einen Merge für Menüs ohne ein MDI machen oder nicht? Wenn nicht, muss ich also direkt mit .Add(Control) arbeiten und die einzelnen neuen Elemente "von Hand" einfügen?
Freue mich auf Eure Antworten,
Gregor
Der Designer hat bei abgeleiteten Forms manchmal ein Problem, wenn die Felder als Friend deklariert sind. Ändere das mal in dere BaseForm zumindest für das MenuStrip-Steuerelement (Modifier-Eigenschaft) in Protected, dann könnt's gehen.
Mit Menü Merge hat das aber nix zu tun.
Also das mit dem Modifier "Friend" musst Du mir nochmals zeigen, kenne da keinen solchen Modifizierer und habe den auch nicht 🙂.
Das "Problem" dreht sich darum, dass ich eigentlich mit dem Designer arbeiten will. Der Merge Vorgang bei MDIs ist sehr praktisch und erspart mir so einiges an Kopfarbeit. Theoretisch könnte ich es im Code einbringen, dass die richtigen Elemente hinzugefügt werden etc. Nur sind diese dann nicht mehr mit dem Designer editierbar und ich habe ein etwas unangenehmen zusammenschluss von effektiver Business Logik in der Klasse und dem erzeugen etc. der Komponenten. Ich könnte es zwar in die .Designer.cs - Datei legen. Die meisten Entwickler sind aber gewohnt, dass diese Datei wirklich nur vom Designer verwendet wird und würden dort kaum nach möglichen Fehlern suchen ^^.
Naja entweder es gibt eigentlich ne Möglichkeit nen merge zu machen oder nicht. Habe nähmlich nochmlas mit den Modifieren gespielt und es geht nicht, aber es ist ja auch logisch. Das geerbte Menü ist in der BaseForm codiert, da kann ich nicht einfach in einer abgeleiteten Form anfangen neue Items einzufügen. Darum wäre es eben toll, wenn ich ein zweites Menü in die abgeleitete Form lege und dieses mit dem geerbten verbinde (Merge). Wäre für mich und auch in den Augen von mir halt die sauberste Lösung. Wenns nicht geht werd ich eine entsprechende Schnittstelle in mein baseform einbauen, welche es erlaubt die einzelnen Items möglichst sauber hinzu zufügen.
//Edit:
Unter "es geht nicht" versteh ich folgendes: Im Designer ist das Menü locked. Kann es somit nicht editieren 😉
Danke und Gruss,
Gregor