MouseUp-Event wird nicht ausgelöst

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Malior.

    MouseUp-Event wird nicht ausgelöst

    Grüße,
    ich habe wieder ein seltsamens Problem.
    Bisher habe ich eine Listbox, deren Inhalte mit Drag&Drop verschoben werden sollen.
    Gleichzeitig muss aber auch ein Contextmenu angezeigt werden, wenn man einen einfachen Rechtsklick macht.

    Problem: Wenn man einen Rechtsklick ausführt und das Contextmenu sichtbar ist und anschließend woanders in der Listbox erneut rechtsklickt, dann verschwindet nur das aktuelle Contextmenu aber kein neues erscheint. Erst ein erneuter Rechtsklick funktioniert.

    Bei der Analyse des Problems habe ich festgestellt, dass mit dem zweiten Rechtsklick (während vom ersten noch das Contextmenu sichtbar ist/war) wird nur das MouseDown-Event ausgelöst, aber nicht das MouseUp.

    Kann sich eienr vorstellen woran das liegt? Meine Listbox ist auch auf DrawMode 'OwnerDrawFixed' für eine individuelle darstellung - macht das was aus?

    Grüße
    Malior
    ahoi,

    wird das erste kontextmenü denn im mousdown oder mouseup event geschlossen ?
    wenn ich mal ins blaue rate würde ich meinen dein mouseup event ist noch aktiv
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Also das ContextMenu verschindet sobald ich wonaders klicke, ob rechts oder links. Wenn ich einen Linksklickmacht, geht alles wunderbar. Es wird das Down- und Up-Event ausgelöst.
    Mit der rechten Maustaste leider nur das Down-Event.

    Keine der Subs zeigst selbst das Contextmenu an, ich editiere nur je nach Element die ToolStripMenuItems.
    kannst du mal bitte den code deiner beiden events posten ...
    ich wundere mich gerade warum du beide brauchst
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Also wiegesagt,
    1. Rechtsklick - MouseUp wird ausgeführt und setzt das Contextmenu
    1.1 ContextMenu Erscheint

    2. Rechtsklick auf ein anderes Item
    2.1 Contextmenu vom vorigen verschwindet - MouseUp wird nicht ausgelöst !



    VB.NET-Quellcode

    1. 'Hier passiert eigentlich nichts mehr
    2. Private Sub ListBox_Ausgang_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox_Ausgang.MouseDown
    3. ContextMenuStrip_Anschlussbereich.Tag = ListBox_Ausgang
    4. End Sub
    5. Private Sub ListBox_Ausgang_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox_Ausgang.MouseUp
    6. 'Füllt nur die PropertyGrid
    7. SelectItemAnschlussbereich(ListBox_Ausgang)
    8. If e.Button = Windows.Forms.MouseButtons.Right Then
    9. '-----------------------------------------------
    10. SetConnectionAreaContextMenu(ListBox_Ausgang, e)
    11. '-----------------------------------------------
    12. End If
    13. End Sub
    14. Private Sub SetConnectionAreaContextMenu(ByVal listbox As Windows.Forms.ListBox, ByVal e As System.Windows.Forms.MouseEventArgs)
    15. Dim indexUnderMouse As Integer
    16. indexUnderMouse = listbox.IndexFromPoint(e.X, e.Y)
    17. If listbox.SelectedIndices.Contains(indexUnderMouse) = False Then
    18. listbox.ClearSelected()
    19. listbox.SelectedIndex = indexUnderMouse
    20. End If
    21. 'hier werden nur noch sonst ToolStripMenuItems
    22. 'sichtbar und unsichtbar gesetzt
    23. 'If ....
    24. ' ToolStripMenuItem_x.Visible = True
    25. ' ToolStripMenuItem_y.Visible = False
    26. ' ...
    27. 'End if
    28. End Sub
    also ich würde mal stark behaupten das liegt an deiner
    SetConnectionAreaContextMenu - function

    du setzt da auch die koordinaten die du direkt im mouseup-event setzen könntest

    VB.NET-Quellcode

    1. ContextMenuStrip1.Show(Cursor.Position)


    die restliche verarbeitung deiner items sollten auch drin bleiben können ...
    der scheint nicht richtig damit klar zu kommen das die koordinaten der maus von der function kommen,
    bzw. wird das kontextmenü beim neu aufrufen nicht richtig geschlossen
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    AARGH,...Ich sehe grade ich hab was "vergessen".

    Ich habe noch ein MouseMove Event, dass ich für eine vom Klick unabhängige Drag&Drop Aktion auslöst wenn die rechte Maustaste gedrückt ist.
    So, und nun wird beim Rechtsklick! das Mouve ausgelöst, obwohl ich nur rechtsklicke - und das Drag&drop verhintert dann mein MouseUp... juhu.

    Kann mir einer erklären warum denn mit dem Rechtsklick das MouseMouve mit ausgelöst wird?
    ich denke mal das mousemove wird unweigerlich ausgeführt da du die maus ja bewegen wirst und nich wirklich star hälst
    Grüße Manu

    Was Gott dem Menschen erspart hat, kann der Computer.
    Billy ©, (*1932), Schweizer Aphoristiker
    Quelle: www.Aphorismen.de
    Also wenn grad noch kein KontextMenu kommt, wird das Move-Event nicht ausgelöst.
    Ich habe jetzt eine Prüfung eingeführt, ob nach dem Letzte Rechts-MouseDown mehr als X pixel bewegt wurde, und löse danach erst das DragDrop aus.

    Danke dennoch, so hatte ich ein einfacherers Ausschlussverfahren ^^

    Grüße