Toolstripmenuitem schließen unterdrücken

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von AndPod.

    Toolstripmenuitem schließen unterdrücken

    Hallo,

    ich zeige in meiner Anwendung die letzten 5 geöffneten Aufträge als Historie via Dropdownmenü (Toolstripmenuitems) an. Inspiriert durch einen anderen Beitrag will ich nun den Benutzer nun die Möglichkeit bieten, Einträge in dieser Auflistung als "Favorit" zu markieren. Im Mousedown-Event des Toolstripmenutiems fange ich anhand der Mausposition ab, ob er über dem Bild-Bereich des Items ist. ist dieses der Fall wird der Eintrag als Favorit markiert/entfernt. Gleichzeitig setzte ich eine Variable auf False, damit im Click-Event verhindert wird, das der Auftrag geöffnet wird. Soweit funktioniert das auch. Jetzt möchte ich aber, das auch die Tooltipmenuitems weiterhin offen bleiben (oder neu geöffnet werden). Ist das umsetzbar? Es gibt zwar ein ShowDropdown-Befehl, welches ich im übergeordneten Toolstripmenuitem bei Dropdownclosed wieder anspreche, aber das funktioniert scheinbar so nicht, zumindest macht es nichts.
    @AndPod Probierdasmal mit der Property CheckOnClick.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hab im MSDN-Forum was gefunden. Nicht schön, aber funktioniert:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. AddHandler YourToolStripMenuItem.DropDown.Closing, AddressOf PreventItFromClosing
    3. End Sub
    4. Private Sub PreventItFromClosing(sender As Object, e As ToolStripDropDownClosingEventArgs)
    5. e.Cancel = True
    6. End Sub

    Man muss allerdings auch irgendwann an sinnvoller Position wieder den Handler entfernen (Stichwort RemoveHandler) und das Menü zu Fuß schließen, sonst bleibt es natürlich dauerhaft offen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @RodFromGermany
    CheckOnClick verhindert ja das schließen nicht. Oder hab ich einen Wink nicht verstanden?

    @VaporiZed
    Das funktioniert prima, vielen Dank. Ich verwende in der Funktion einfach meine oben erwähnte bool-Variable, damit läuft es genauso wie ich es mir vorgestellt habe. Im Bild Bereich klicken zur Markierung, das Menü bleibt offen. Im Textbereich klicken um ein Formular zu öffnen, das Menü schließt sich. Wunderbar :)

    AndPod schrieb:

    CheckOnClick
    hat nix mit dem Schließen zu tun, sondern eröffnet Dir eine CheckBox-Property dieses Items, die Du für Deine Zwecke ausnutzen kannst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Ich sehe da aktuell nicht, wo mir das dienlich sein könnte, außer das ich statt eines Bildes den Haken darstelle. Ich musste aber je nach Mauszeigerposition innerhalb des Steuerelementes unterschiedlich reagieren, was auch soweit alles geklappt hatte. Das einzige Problem war, das sich dass Menü nicht schließen durfte, was aber dank des Codes von VapriZed auch erledigt ist. Trotzdem vielen Dank für deine Hilfe :)