ContextMenuStrip.show

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ContextMenuStrip.show

    hallo :)ich habe im mousedown-ereignis folgenden code:

    VB.NET-Quellcode

    1. Private Sub txtOldFilename_MouseDown(sender As Object, e As MouseEventArgs) Handles txtOldFilename.MouseDown
    2. Dim path As String
    3. If e.Button = MouseButtons.Left Then
    4. Exit Sub
    5. End If
    6. path = myPath & oldFile & ".mp3"
    7. Call FileMenu(txtOldFilename, path, oldFile & ".mp3",
    8. , False,, False, False)
    9. End Sub


    im filemenu wird das menu formatiert und als contextmenu txtOldFilename.contextmenu zugewiesen.
    danach wird es mit menu.show() aufgerufen.

    das problem ist, dass das menu erst reagiert, wenn ich ein zweitesmal in das textfeld mit rechts klicke.
    1x wird das menu oben links im screen angezeigt, verschwindet und platziert
    sich dann bei der mouse auf dem textfeld. ich kann elemente anwählen.
    aber es passiert nix. erst wenn ich ein 2x rechts reinklicke wird der
    code ausgeführt.

    was mache ich falsch ?
    weiss jmd rat ?

    hier noch der codeauszug von FileMenu

    VB.NET-Quellcode

    1. Control.ContextMenuStrip = .mnuPath
    2. .mnuPath.Show()
    3. End With
    4. Select Case mnuPathMenuSelect
    5. Case 1
    6. Execute(path)
    7. Case 2
    8. Explore(path, False)
    9. Case 3
    10. Explore(path, True)
    11. Case 4
    12. If isFile Then RenameFile(path, pathTarget)
    13. End Select
    @woeh Schreib mal so viel Code zusammen, dass Dein Effekt reproduziert wird (teste dies in einem neuen Projekt) und poste den ganzen Code.
    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!
    Etwas mehr Code wäre tatsächlich sinnvoll, aber wenn wir das Problem stark vereinfachen:

    VB.NET-Quellcode

    1. Private Sub TextBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles TextBox1.MouseDown
    2. SetCMS(TextBox1)
    3. End Sub
    4. Private Sub SetCMS(ctl As Control)
    5. ctl.ContextMenuStrip = ContextMenuStrip1
    6. ContextMenuStrip1.Show()
    7. End Sub

    ...dann ist Zeile 7 das Problem. Diese auskommentieren und das Menü taucht (nur) an der richtigen Stelle auf. Und bei mir sofort. Dass es bei Dir erst beim 2. Klick auftaucht, dürfte an dem Code liegen, den wir bisher noch nicht kennen.
    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.
    ich habe erst jetzt das mit zeile 7 gesehen...
    ja, es funktioniert....

    1000 dank ;)

    noch ne frage.....geht das auch so wie in vb, dass das menu aufgerufen wird und erst nach menuklick weitergeführt wird ?

    oder müßte ich mir ne do-schleife basteln, dass auf nen wert vom menu wartet ?
    ist das sinnvoll ?

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

    woeh schrieb:

    so wie in vb
    VBA, VB6, VB.NET :?:

    woeh schrieb:

    ist das sinnvoll ?
    Vielleicht spielst Du ein wenig mit den Controls, machst Dir ein paar Testprojekte, die Du danach wieder löschen kannst.
    Und
    Lies ein Buch. Dieses z.B.
    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!