Events Problem

  • VB.NET

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

    Events Problem

    Hey Leute

    Gleich mal meine nächste Frage ;D

    Ich setze den Wert einer boolean Variable auf True mit dem "MouseDown" Event von allen verfügbaren Buttons.
    Der Wert wird erst wieder mit dem "MouseUp" Event auf False gesetzt.

    Mit einer If-Anweisung frage ich im "MouseMove" Event von jedem Button folgendes ab:

    VB.NET-Quellcode

    1. If pressdown = True Then
    2. blabla
    3. End If


    Allerdings scheint das Programm nicht auf "MouseMove" zu reagieren wenn ich die Maustaste noch gedrückt halte. Auch "MouseEnter" funktioniert nicht.
    Gibt es ein anderes Event um das ganze vernünftig umsetzen zu können? Oder muss ich an die Sache anders heran gehen? ^^

    Mfg Devilos

    Devilos schrieb:

    Allerdings scheint das Programm nicht auf "MouseMove" zu reagieren wenn ich die Maustaste noch gedrückt halte. Auch "MouseEnter" funktioniert nicht.
    Mit welchem 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!

    Schlammy schrieb:

    und loslässt


    Ich lass die Maus aber nicht los. Ich fahr mit gedrückter Maus über den nächsten Button.

    @RodFromGermany

    Im MouseMove Event steht die If-Anweisung die ich im ersten Post erwähnt habe. Aber es ist nicht so, dass nicht auf die If-Anweisung reagiert wird, sondern überhaupt nicht auf das Event. Habs mit einem Haltepunkt getestet. Funktioniert nicht

    Devilos schrieb:

    Im MouseMove Event steht die If-Anweisung die ich im ersten Post erwähnt habe.
    OK.
    Dann nimm in Zeile 4 das Kommentarzeichen raus und lass in Zeile 5 den Laufindex bis ...
    Oh Mist, da hat mein Hamster gerade meine Glaskugel runtergeworfen. :D :D :D
    Hilft nix, da musste halt den Code mal direkt posten.
    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!
    @RodFromGermany

    Ich weiß nicht was das bringen soll? Ich versuch dir das jetzt noch mal zu erklären. Auf das MouseMove Event wird nicht reagiert! Da ist die If-Anweisung komplett egal, weil das Programm sowieso nicht ins MouseMove Event reingeht.
    Warum habe ich mittlerweile auch schon herausgefunden. Weil eben auf das MouseMove Event nicht reagiert wird sollange ich die Maus gedrückt halte.

    Devilos schrieb:

    und MouseHover Event ist wenn die Maus für einen bestimmten Zeitraum nicht bewegt wird. Das sagt mir zumindest die Erklärung in VS
    Also eigentlich ist MouseHover wenn die Maus über das Object "gezogen" wird und es "berührt"
    Du müsstest das MouseDown event villeicht wegspeichern und bei allgemein mouseup löschen nur wie das geht weis ich nicht :(

    Devilos schrieb:

    Ich weiß nicht was das bringen soll?
    Ich kann Deine Aussage so 1. nicht nachvollziehen und 2. nicht bestätigen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    3. Label1.Text = "Down"
    4. End Sub
    5. Private Sub Form1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
    6. Label1.Text = "Up"
    7. End Sub
    8. Private Sub Form1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    9. Label1.Text = "Move"
    10. End Sub
    11. End Class

    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!
    @ErfinderDesRades

    Ja auch wieder wahr.

    Würde aber auch nichts bringen wenn ich den Focus änder oder? Wie du ja schon erwähnt hast geht das MouseMove Event nur auf das selbe Control welches auch das MouseDown-Event empfing.

    Also muss ich eine andere Lösung suchen oder mit gesagt bekommen lassen ;D

    Edit:

    @RodFromGermany

    Scheinbar bist du hier der einzige der das nicht ganz nach voll ziehen kann. Zumindest von denen die Antworten ^^
    Lies dir den Post von "ErfinderDesRades" durch (inklusive des vorhanden Zitates in seinem Post). Vielleicht verstehst du es dann ein wenig.

    Devilos schrieb:

    Vielleicht verstehst du es dann ein wenig.

    Scheinbar bin ich einer der wenigen, der versucht, (D)ein Problem anhand eines Codes nachzuvollziehen.
    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!
    @ErfinderDesRades

    ok, aber wenn ich jetzt z.B. mit dem MouseDown Event von "Button1" die boolean Variable auf True setze, und mit gedrückter Maustaste auf "Button2" fahr, wie mache ich das, dass das MouseMove Event von Button2 trotzdem anspringt?

    @RodFromGermany

    Das ist schon richtig, allerdings finde ich es unwichtig ob in der If-Anweisung textbox1.text = "Hallo" steht oder etwas anders. Es geht nur darum, dass überhaupt eine If-Anweisung im MouseMove Event ist, welches aber überhaupt nicht angesprochen wird (mit gedrückter Maustaste), da ein anderes Control das MouseDown Event empfängt.
    Zur Erinnerung! Meine If-Abfrage sieht so aus:

    VB.NET-Quellcode

    1. If pressdown = True Then
    2. blabla
    3. End If


    Ist aber mittlerweile auch unwichtig

    EDIT:

    VB.NET-Quellcode

    1. Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown Handles Button2.MouseDown Handels Button3.MouseDown
    2. pressdown = True
    3. End Sub


    VB.NET-Quellcode

    1. Private Sub Button1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp Handles Button2.MouseUp Handles Button3.Mouseup
    2. pressdown = False
    3. End Sub


    Mein MouseDown und MouseUp Event, welches sich auf mehrere Buttons bezieht

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

    Devilos schrieb:

    allerdings finde ich es unwichtig ob in der If-Anweisung textbox1.text = "Hallo" steht oder etwas anders.
    Da ich leider Deinen vollkommenen und genialen Quellcode nicht kenne und so nur auf meinen praktisch nicht vorhandenen Erfahrungsschatz zugreifen kann, um Dein Problem zu reproduzieren, kommt bei mit halt nur Blödsinn raus, weil ich machen kann, was immer ich will, in dem Label steht nur "Move" drin.
    Wenn wir den Code mal so verändern, dass wir alles sehen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    3. Label1.Text = "Down"
    4. Console.WriteLine("Down")
    5. End Sub
    6. Private Sub Form1_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
    7. Label1.Text = "Up"
    8. Console.WriteLine("Up")
    9. End Sub
    10. Private Sub Form1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    11. Label1.Text = "Move"
    12. Console.WriteLine("Move")
    13. End Sub
    14. End Class
    kommt folgendes raus, und schwups ist gezeigt, dass er tatsächlich überall vorbei kommt:
    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!