KontextMenü und SubMenü

  • VB.NET

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

    KontextMenü und SubMenü

    Ich möchte beim rechts-Klick auf TextBox1 das Kontextmenü ändern:

    Dim subMenus(3) As MenuItem
    Dim subMenuItem1 As New MenuItem("&Rot", New System.EventHandler(AddressOf Me.menuFarbeRot_Click))
    Dim subMenuItem2 As New MenuItem("&Blau", New System.EventHandler(AddressOf Me.menuFarbeBlau_Click))
    Dim subMenuItem3 As New MenuItem("&Grün", New System.EventHandler(AddressOf Me.menuFarbeGrün_Click))
    Dim subMenuItem4 As New MenuItem("&Schwarz", New System.EventHandler(AddressOf Me.menuFarbeSchwarz_Click))

    subMenus(0) = subMenuItem1
    subMenus(1) = subMenuItem2
    subMenus(2) = subMenuItem3
    subMenus(3) = subMenuItem4

    Dim menuItems() As MenuItem = New MenuItem() _
    {New MenuItem("&Info"), _
    New MenuItem("&Prüfen"), _
    New MenuItem("&SchriftFarbe", subMenus), _
    New MenuItem("&Löschen")}

    Dim cMenu As New ContextMenu(menuItems)

    Me.TextBox1.ContextMenu = New ContextMenu(cMenu) <--hier komme ich nicht weiter

    Wo ist dort der Fehler?

    Danke im Voraus
    Hallo @hybernate5,
    es wäre schön wenn du deinen Code in die VB.NET Tags Sätzen würdest.
    [vbnet][/vbnet]

    meinst du nicht eher zb.

    VB.NET-Quellcode

    1. TextBox1.ContextMenuStrip = ContextMenuStrip1
    bzw. was genau hast du vor was soll beim rechtsklick auf die TextBox passieren?

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Ich hoffe, das ich die Tags richtig gesetzt hab, da jetzt bei den Antworten die Vorschau fehlt?

    VB.NET-Quellcode

    1. Dim subMenus(3) As MenuItem
    2. Dim subMenuItem1 As New MenuItem("&Rot", New System.EventHandler(AddressOf Me.menuFarbeRot_Click))
    3. Dim subMenuItem2 As New MenuItem("&Blau", New System.EventHandler(AddressOf Me.menuFarbeBlau_Click))
    4. Dim subMenuItem3 As New MenuItem("&Grün", New System.EventHandler(AddressOf Me.menuFarbeGrün_Click))
    5. Dim subMenuItem4 As New MenuItem("&Schwarz", New System.EventHandler(AddressOf Me.menuFarbeSchwarz_Click))
    6. subMenus(0) = subMenuItem1
    7. subMenus(1) = subMenuItem2
    8. subMenus(2) = subMenuItem3
    9. subMenus(3) = subMenuItem4
    10. Dim menuItems() As MenuItem = New MenuItem() _
    11. {New MenuItem("&Info"), _
    12. New MenuItem("&Prüfen"), _
    13. New MenuItem("&SchriftFarbe", subMenus), _
    14. New MenuItem("&Löschen")}
    15. Dim cMenu As New ContextMenu(menuItems)
    16. Me.TextBox1.ContextMenu = New ContextMenu(cMenu)
    <--hier komme ich nicht weiter

    Danke für den >Hinweis.

    Ich klicke mit der re. Maustaste auf eine TextBox- dort steht was geschriebn und es springt Kontextmenü auf mit der Möglichkeit zB etwas zu ändern, oder prüfen usw. Hab nur als Beispiel die Farbe der Schrift in der TextBox zu ändern.

    Es geht mir grunsätzlich um das Muster der Programierung so eines Kontextmenüs mit darin enthaltenem Submenü.

    Danke für deine Mühe
    hybernate5
    jou - nutze die richtigen Tags

    Zur Frage: sowas macht man überhaupt nicht im Code, sondern sowas macht man im FormDesigner: Pack ein ContextMenu aufs Form und weise es - ebenfalls im Designer der Textbox zu.
    Mach - ebenfalls im Designer - MenuItems ins ContextMenu.
    Doppelklickse - ebenfalls im Designer - die MenuItems, dann generiert er dir die Event-Handler - Methoden.

    Hingegen wenn du das im Code machst, klickste da 3 mal drauf, und die Textbox hat dann 3 ContextMenus, und 12 MenuItem, und so weiter.
    Sprich du möchtest zb aus:


    folgendes machen:


    Wenn ich das richtig verstanden habe erstell dir in Designer ein neuen ContextMenuStrip und pass den so an das er dir gefällt.
    Anschließend kannst du diesen entweder im Designer direkt der TextBox zuweisen oder per code: TextBox1.ContextMenuStrip = ContextMenuStrip1



    *EDIT* @ErfinderDesRades war wohl schneller *EDIT*

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.

    Naja, wenn man es richtig macht kann man das auch per Code lösen.

    Hat den Vorteil das man in jedem beliebigen Editor schreiben kann, wenn man es kann. Weil, wer kann der kann ;)

    @hybernate5 Was heißt du kommst nicht weiter?
    Du weißt nicht mehr weiter oder es kommt ein Fehler?
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Jou.

    hybernate5 schrieb:

    TextBox1 das Kontextmenü ändern
    Mach alles im Designer.
    Da bei Rechtsklick sowieso das Contextmenu aufgeht, kannst Du das auch im Designer machen.
    Also:
    ContextMenu anlegen und befüllen, Deiner textBox als ContextMenu zuweisen, Eventhandler auch im Designer generieren, im Studio ausfüllen und feddich.
    -----

    MrTrebron schrieb:

    kann man das auch per Code lösen.
    Wozu?

    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!

    MrTrebron schrieb:

    Hat den Vorteil das man in jedem beliebigen Editor schreiben kann, wenn man es kann. Weil, wer kann der kann
    Ehhm ja muss ich das verstehen? O.o

    LG Ruerte
    Unfortunately, this Signature is not available in Germany because it may contain music for which GEMA
    has not granted the respective music rights. Sorry about that.