Mauzeigen in bestimmtem Bereich/An einer Stelle festhalten

  • VB.NET

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

    Mauzeigen in bestimmtem Bereich/An einer Stelle festhalten

    Hallo,

    Weiß jemand, ob man den Mauszeiger innerhalb eines Bereiches (In diesem Fall ein Button) festhalten kann, so dass er sich nurnoch in diesem Bereich bewegen kann? Oder dass evtl. nur an einer Stelle auf der Form (Nämlich über dem Button) stehenbleibt?

    Ich würde mich über Antworten freuen und bedanke mich schon einmal im Vorraus.



    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    Du überprüfst in einem Event wenn der Mauszeiger den Button verlässt.
    Wenn das geschieht, dann wird die Maus quasi wieder zurückgesetzt.

    Gruß
    Der Ansatz ist super :) , das mach ich gleich mal...ist eigenndlich simpel, das ich da nicht selbst draufgekommen bin... :S
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    Hi
    Andernfalls kannst du auch

    VB.NET-Quellcode

    1. Dim pos as Point = Me.pointToClient(Button1.pointToScreen(Point.Empty))
    2. cursor.clip = new Rectangle(pos.X, pos.Y, Button1.ClientSize.Width, Button1.ClientSize.Height)


    PointToClient rechnet eine Bildschirmkoordinate in eine Koordinate relativ zur Form um, PointToScreen genau umgekehrt.

    Gruß
    ~blaze~
    Das funktioniert leider auch nicht, man kann die Maus nach wie vor bewegen :(

    Ich hatte es auch probiert, leider hat es auch nicht geklappt da in meinem Fall Cursor.Position ein Wert war und man es nicht für ne Zuweisung verwenden konnte :(
    (Die Lösung war auch ziemlich dumm)

    VB.NET-Quellcode

    1. If Not Cursor.Position.X = 573 And Cursor.Position.Y = 305 Then
    2. Cursor.Position.X = 573
    3. Cursor.Position.Y = 305
    4. Else
    5. Cursor.Position.X = 573
    6. Cursor.Position.Y = 305
    7. End If


    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    Eigend lich funktionierts ja auch, nur das 1. Das gefangen sen nach Beenden der Anwendung nicht aufhört bis man sich noch mal startet und 2. der "Rahmen" in dem die Maus gefangen ist ist irgendwo auf dem Bildschirm, aber nicht über dem Button. :( Trotzdem ist die Idee sehr gut :)


    Mfg, jmb.96 :)
    "People assume that time is a strict progression of cause to effect, but actually, from a non-linear, non-subjective viewpoint, it's more like a big ball of wibbly wobbly, ...timey wimey ...stuff."
    Ah, der Code oben ist auch einfach nur Stuss gewesen, sorry. Keine Ahnung wo ich da wieder mit den Gedanken war:

    VB.NET-Quellcode

    1. Dim pos as Point = Button1.pointToScreen(Point.Empty)
    2. cursor.clip = new Rectangle(pos.X, pos.Y, Button1.ClientSize.Width, Button1.ClientSize.Height)


    So sollte es funktionieren. Wenn du die Maus wieder freigeben möchtest, musst du nur

    VB.NET-Quellcode

    1. cursor.Clip = Rectangle.Empty

    verwenden

    Gruß
    ~blaze~