Contextmenu
-
Hallo,
ich habe auf meiner Form einen ContextMenuStrip namens "cntView". Das Kontextmenü hat ein Menüitem "View" und das hat wiederrum 2 Kind Menüitems "Top" und "Left".
Jetzt habe ich 4 Panels und alle brauchen das Kontextmenü. Da die Kontextmenüs identisch aussehen, will ich nicht 4 einzelne Kontextmenüs erzeugen, sondern füge mein Kontextmenü "cntView" allen 4 Panels als Kontextmenü hinzu.
Jetzt füge ich den Menü Items "Top" und "Left" ein Click Event hinzu. Aber mein Problem ist: Woher weiß ich nun im ClickHandler, auf WELCHEM Panel das Kontextmenü aufgerufen wurde?
Sprich:System::Void cntViewMnItmViewTop_Click(System::Object^ sender, System::EventArgs^ e) { // Es wurde in einem der 4 Panel das Kontextmenü aufgerufen und das Menüitem View->Top geklickt // Wie komm ich nun an das Panel^ p? }
Der Code ist C++/CLI, aber das ist ja Wurst. Ihr könnt auch VB.NET oder C# Lösungstipps posten.
Danke!
-
Das kannst Du ohne weiteres nicht herausfinden.
AFAIK ist der sender das "Menu Item"..Spielt es denn wirklich eine Rolle von wo der Menu Punkt aktiviert wurde?
BTW: Es gibt ein C++/CLI Forum hier, und dort wird auch geantwortet.
Simon
-
Doch das geht schon: das ContextMenuStrip hat die Eigenschaft 'SourceControl' dafür.
-
Th69 schrieb:
Doch das geht schon: das ContextMenuStrip hat die Eigenschaft 'SourceControl' dafür.
Und wie komme ich an dieses ContextMenuStrip? Ein Cast von sender auf (ContextMenuStrip^) geht bei mir nicht.
-
Was bedeuted "geht nicht"?
Simon
-
Du sollst ja auch nicht den 'sender' casten, denn das ist (wie oben schon erklärt) das angeklickte 'MenuItem'. Einfach mittels 'contextMenuStrip.SourceControl' darauf zugreifen (oder wie auch immer dein ContextMenuStrip heißt (bzw. in C++/CLI mittels 'contextMenuStrip->SourceControl').
-
Th69 schrieb:
Du sollst ja auch nicht den 'sender' casten, denn das ist (wie oben schon erklärt) das angeklickte 'MenuItem'. Einfach mittels 'contextMenuStrip.SourceControl' darauf zugreifen (oder wie auch immer dein ContextMenuStrip heißt (bzw. in C++/CLI mittels 'contextMenuStrip->SourceControl').
Das wäre zwar eigentlich die richtige Lösung, aber sie geht leider nicht, weil SourceControl offenbar verbuggt ist ( http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=96476 ).
Habs jetzt gelöst, in dem ich da Panel im Opening Event "cache".Danke Th69!
@theta: Kein Kommentar...
-
@theta: Kein Kommentar...
Ja, also wirklich... schreib doch was und wie es nicht geht...
-
theta schrieb:
@theta: Kein Kommentar...
Ja, also wirklich... schreib doch was und wie es nicht geht...
Deutsch in der Grundschule abgebrochen?
theta schrieb:
Das kannst Du ohne weiteres nicht herausfinden.
Ernst gemeinter Rat: Wenn man keine Ahnung hat, einfach mal...
-
theta schrieb:
Das kannst Du ohne weiteres nicht herausfinden.
Ernst gemeinter Rat: Wenn man keine Ahnung hat, einfach mal...
Nun, dann schweige auch.
-
Sagt der Fachinformatiker :>