Wo wurde ContextMenu aufgerufen
-
Ich habe mehrere Panels in meiner Form, und jedem das gleiche ContextMenu zugewiessen.
Wie kann ich nun feststellen, bei welchem Panel das ContextMenu aufgrufen wurde?
In object sender steht ja nur drin welches Menü angeklickt wurde. Steht es evtl in EventArgs, und wann ja, wie komm ich an die Information ran.
Danke
-
Servus,
beim OnClick Event des MenuItems das Senderobject auslesen. Das ganze auf ein MenuItem casten, den Parent auf ein ContextMenu casten und dann die Eigenschaft SourceControl auslesen.
private void OnKatzenKlo(object sender, System.EventArgs e) { string treeViewName = (((sender as MenuItem).Parent as ContextMenu).SourceControl as TreeView).Name; }
Hier ist z.B. das SourceControl ein TreeView. anhand des Namens erkennt man dann, bei welchem dann das ContextMenu ausgelöst wurde.
Einfacher wäre es natürlich, wenn du beim PopUp Event vom ContextMenu dir merkst, wo das ganze aufgetaucht ist. (Steht im Sender) Den Rotz schreibst du dann z.B. in eine Variable vom Typ object. Dann haste das *g*
mfg
Hellsgore
-
Mit der Eigenschaft ContextMenu::SourceControl kannst du das zugehörige Control ermitteln und entsprechend reagieren im OnPopop-Event.
-
Ahhh, Super das geht. Hab schon fast alle Methoden und Eigenschaften durchprobiert, aber auf SourceControl wäre ich nie gekommen.
Was für eine Eigenschaft ist das den genau, wenn ich mal blöd fragen darf
-
Die Eigenschaft heißt "SourceControl" die ist vom Typ System.Windows.Forms.Control.