MenüStrip komplett ausblenden

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Coolia.

    MenüStrip komplett ausblenden

    Hallo,
    ich hoffe, ihr könnt bei meinem Problem helfen. Ich mache grad meine ersten Gehversuche in VB und stehe nun vor folgendem Problem:

    In einer Form befindet sich ein Menüstrip mit mehreren ToolStripMenü-Punkten (z.B. Datei -> neu / öffnen / beenden... usw.). Diesen Menüstrip möchte ich ca. 20 sek nach Aufruf der Form automatisch unsichtbar machen, was auch klappt. Nur wenn der Benutzer innerhalb dieser Zeit auf Datei geklickt und sich das Dropdownmenü geöffnet hat, bleibt dieses sichtbar, obwohl der Toolstrip mit dem Punkt "Datei" dann korrekt ausgeblendet wird.

    Was muss ich tun, damit die Regelung "verschwinde" auch auf das Dropdownmenü wirkt? Es kann doch nicht sein, dass ich für jeden Toolstripmenüpunkt in der Leiste diese Anweisung extra schreiben muss.

    Vielen Dank im voraus für Hilfe.

    Coolia
    naja, des müsste ja einfach mit timer gehen timerintervall 20000 ach was erzähl ich dir da, weißt ja selber, aber toolstripmenu.visible = false müsste gehen.
    Ich würde so ein problem mit neustarten der form lösen(also 2te form erstellen opacity = 0, dann bei timer.tick einfach form2.show

    form2.load: form1.close, form1.show, form1.toolstripmenu.visible = false, me.close
    Fertig(Anwendungsframework natürlich Modus für das Herunterfahren: Beim Schließen des letzten formulars.)Müsstest zuerst ausprobieren Hab jetzt keine gelegenheit, schulcomputer, aber eingentlich müssts gehen
    @JU84553Hgd: gebe doch nicht solche schlechten Beispiellösungen, das mit unter die schlechteste Methode für sowas und alleine sowas vorzuschlagen grenzt an illegalität.

    Zum Thema, verstehe ich das richtig, nach den 20 sek wird die Menüleiste ausgeblendet wie es sein soll, jedoch das DropDown Menü bleibt?
    Schaue mal ob die Form über eine Methode verfügt die Refresh() heißt, das könnte ggf. helfen. Also erst ToolStrip verstecken und dann ein Form Refresh auslösen.
    Anderfalls kann es auch möglich sein, dass das DropdownMenustrip über eine Close() Methode verfügt, ausm Kopf weiß ich das nicht, aber schau mal in den Eigenschaften nach die im Code erscheinen wenn du den Namen des Menüs eintippst und dann ein "." (Punkt) dahinter machst.
    Also das Refresh des Formulars bewirkt nichts anderes, als wenn ich den MenüStrip mit .Visible = false unsichtbar mache. Das geöffnete Dropdownmenü bleibt trotzdem bestehen.

    Ein .close() für den MenuStrip oder das Dropdownmenü gibt es nicht.

    Ich verstehe nicht, warum das Dropdownmenü, welches man ohne den Menüstrip ja gar nicht öffnen kann, sich auf einmal eigenständig macht und nicht den Code vom übergeordneten Element übernimmt.

    Selbst wenn ich jeden einzelnen Eintrag im Dropdownmenü mit visible=false unsichtbar mache, bleibt zuletzt immer noch ein schmaler leerer Kasten sichtbar, den ich überhaupt nicht ansprechen kann.
    Nunja, es wurde einfach nicht dafür konzipiert, deswegn wurde da sicher kein Event für eingefügt welches an das DropDown gesendet wird, sofern das MenüStrip die Visible Anweisung bekommt. Ansonsten sind das eben 2 unterschiedliche Controls, das DropDown wird eben vom MenüStrip aufgerufen und kann sehrwohl auch manuell ausgeführt werden, z.B. im ContextMenuStrip, wo nur das DropDown erscheint.
    Waaah, ich hab's!!!

    Mit <name>.HideDropDown() lässt sich jedes einzelne Dropdownmenü schließen. Der Menüstrip selber kann dann - vorher oder nachher - mit Hide() unsichtbar gemacht werden.
    So funktioniert es jedenfalls.

    Danke für eure Ideen :)

    Coolia

    Coolia schrieb:

    Waaah, ich hab's!!!

    Mit .HideDropDown() lässt sich jedes einzelne Dropdownmenü schließen. Der Menüstrip selber kann dann - vorher oder nachher - mit Hide() unsichtbar gemacht werden.
    So funktioniert es jedenfalls.

    Danke für eure Ideen :)

    Coolia

    Wo hast du denn HideDropDown gefunden?
    Bezieht sich das auf das Item oder auf Me?