ContextMenuStrip Owner mit Select Case herausfinden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Rootbob91.

    ContextMenuStrip Owner mit Select Case herausfinden

    Hallo zusammen,

    ich habe ein ContextMenuStrip 2 Datagridviews zugeordnet.

    Nun wollte ich herausfinden, "von welchem Datagridview" der Rechtsklick kommt, ich dachte das würde zum Beispiel so gehen, entweder per Sender oder Eventarg..

    VB.NET-Quellcode

    1. Private Sub cms_Test_Opening(sender As Object, e As CancelEventArgs) Handles cms_Test.Opening
    2. MsgBox(sender.name)
    3. End Sub


    Leider ist der Sender (ich weiß das es für gewöhnlich die auslösende Klasse, bzw. das Objekt ist..) der auslösende ContextMenuStrip und das EventArg nur fürs Cancellen zuständig wie der Name schon sagt.

    Alternativ dachte ich dann noch an "Control via Mauskoordinate ermitteln", aber da muss es doch bestimmt eine elegantere Methode geben?
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Rootbob91“ ()

    Ich glaube, dass es in dem Fall gar keinen Owner gibt (korrigiert mich wenn ich falsch liege).
    Eventuell beim Rechtsklick wegschreiben in welchem Grid die Maustaste gedrückt wurde und anschließend beim cms Klick abfragen.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Okay, so hatte ich das auch schon überlegt, dachte aber das KontextMenü würde mitliefern, von welchem Steuerelement es ausgelöst/angezeigt wird.

    Bin auch die Eigenschaften durchgegangen, konnte mir bisher nichts zusammenreimen.

    Vlt. könnte ich auch anhand der Koordinaten im Opening (also der Mauskoordinaten) schauen, welches Control sich darunter befindet, so würds vlt. auch gehen.

    Hatte vorhin mal was zu ner API in der Richtung gefunden. Ich schaue aber erst nochmal ob es da Bordmittel gibt um ein Control anhand seine Position auf der Form zu identifizieren.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Ja da hatte ich auch dran gedacht, aber bei 2 Datagridviews, welches ist dann der Parent? Wirklich nur das Korrekte, wo eben halt der Rechtsklick drauf ausgeführt wurde und somit das CMS erscheinen ließ?

    EDIT: Habs mit Parent versucht, also 2 DGVs ein CMS zugeordnet, dann habe ich versucht mir den Parent.Name ausgeben zu lassen (im Opening Ereignis des CMS), dann kommt ne komische Fehlermeldung:
    Die Objektvariable oder die ... blabla Blockvariable.. Total komische Meldung..

    So geht's z.B. nicht:

    VB.NET-Quellcode

    1. Private Sub cms_Test_Opening(sender As Object, e As CancelEventArgs) Handles cms_Test.Opening
    2. MsgBox(CType(sender, ContextMenuStrip).Parent.Name)
    3. End Sub

    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..
    Du meinst via MouseDown/Click bei einem Click aufs DGV?

    EDIT: Habs hinbekommen:

    VB.NET-Quellcode

    1. Private Sub cms_Test_Opening(sender As Object, e As CancelEventArgs) Handles cms_Test.Opening
    2. MsgBox(CType(sender, ContextMenuStrip).SourceControl.Name) 'SourceControl das Control-Object an sich, Name = ... 3x dürft ihr Raten :D!
    3. End Sub


    Danke sehr trotzdem ;)!
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..