Context Menue verbergen / schließen

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

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Peter329.

    Context Menue verbergen / schließen

    Hi,

    Ich habe eine Textbox, nennen wir sie txtText.

    Wenn ich dieses Feld mit der rechten Mouse Taste anklicke fange ich dies ab in der Ereignisprozedur mit Handles txtText.MouseDown und führe dann bestimmte Aktionen durch.

    Das klappt soweit auch gut.

    Allerdings springt dabei immer das ContextMenue der Textbox auf. Und das muss ich dann etwa mit einem Click auf die Form schließen.

    Das ist nervig. Kann ich verhindern, dass das ContextMenue geöffnet wird ... oder kann ich es wenigstens programmgesteuert schließen.

    Ich hab im Designer nach entsprechenden Eigenschaften gesucht ... und ich habe nach Befehlen zum Schließen des ContextMenue gesucht ... bin aber leider nicht fündig geworden.

    Kann mir jemand nachsichtig helfen?

    LG
    Peter
    @VB1963 Jou.
    @Peter329 Du kannst ja in Deinen Settings-Optionen einen Haken machen, was bei Mausklicks passieren soll.
    Dein Zielformalismus oder das ContextMenu.
    Falls in Deinem ContextMenu nix weiter drin steht, kannst Du es natürlich überhaupt löschen oder Du lagerst die Funktionalität in ein anderes Menü aus, ToolStrip oder so.
    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!
    Das habe ich jetzt probiert und in der FormLoad folgendes eingestellt:

    VB.NET-Quellcode

    1. txtText.ContextMenu = Nothing


    Aber das hilft leider nicht ! Der RechtsClick öffnet nach wie vor das ContextMenue ...

    Was mache ich falsch ?

    [edit]

    Habe gerade das hier entdeckt:

    quote: Du kannst ja in Deinen Settings-Optionen einen Haken machen, was bei Mausklicks passieren soll.

    Hmm ... also das soll nur für die txtText gelten ... alle anderen Felder sollen ihr ContextMenue öffnen.

    [edit edit]

    Jetzt habe ich herausgefunden, wie man das lösen kann. Der Rat von VB1963 ist fast richtig. Man muss aber eine Dummy ContextMenue Instanz erstellen und die zuweisen:

    VB.NET-Quellcode

    1. Dim blah As New ContextMenu
    2. txtText.ContextMenu = blah


    So flutscht die Sache jetzt ! Danke für die Initialzündung ! :)

    LG
    Peter

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Peter329“ ()

    Genau dieses ContextMenue meine ich ...

    ShortShortcuts.Enabled = False schaltet blöderweise nicht nur das Windows ContextMenue ab, sondern auch so schöne Dinge wie Cut & Paste (CTRL-C, CTRL-V). Und das benötige ich.

    Meine Lösung mit dem Dummy ContextMenue ist leider doch nicht ganz so zufriedenstellend, wie ich nach einigem Testen bemerkt habe. Das Dingens funktioniert, wenn man in den Bereich der TextBox klickt, wo Text steht ... wenn man "rechts daneben" klickt, also da wo kein Text steht, springt das vermaledeite Windows ContextMenue doch wieder auf.

    Schlaue Ideen ?
    @Peter329 Jou, das isses. Juble der TextBox ein leeres ContextMenu unter:

    VB.NET-Quellcode

    1. TextBox1.ContextMenu = New ContextMenu
    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!
    Na gut ... ich muss wohl damit leben, dass die Sache mit dem Microsoft Contex Menu nicht so ganz zufriedenstellend gelöst werden kann.

    Immerhin bringt die Lösung mit dem Dummy Context Menu ja doch einen gewissen Vorteil ... wenn man auf den eingebenen Text klickt, dann springt das Context Menu nicht auf. Nur wenn man neben den Text klickt ... und dann muss man das Dingens halt durch einen Klick auf die Form schließen. Lästig ... aber damit kann man leben. Es gibt wichtigere Schlachten für die es lohnt Aufwand zu betreiben! :)

    Danke an die Ratgeber ... ihr habt mir ein Stück weitergeholfen ... und letzten Endes ist das ja auch eine wertvolle Information, dass es eben nix Besseres gibt !

    LG
    Peter