[C#] Maus eingrenzen / Absolute Location eines Controls

Danielku15

Erfahrenes Mitglied
Hi Leute.

Ich habe gerade folgendes Problem. Ich möchte die Maus auf den Bereich einer Picturebox eingrenzen. Die einzige Möglichkeit die Koordinaten einer Maus zu ändern ist meines Wissens mittels Cursor.Position . Jedoch sind die Koordinaten immer vom Bildschirmrand aus angegeben. Da das Location Attribut leider nur die Position vom übergeordneten Element aus angibt habe ich das Problem die Grenzen der Picturebox zu berechnen.
Zur Zeit sieht mein Code so aus:

C#:
                // Ränder der Picturebox berechnen
                int TopBorder = pictureBox1.Location.Y;
                int LeftBorder = pictureBox1.Location.X;
                int BottomBorder = pictureBox1.Location.Y + pictureBox1.Height;
                int RightBorder = pictureBox1.Location.X + pictureBox1.Width;

                // Mauskoordinaten überprüfen und korrigieren //
                // darüber oder darunter
                if (MousePosition.Y < TopBorder)
                {
                    Cursor.Position = new Point(MousePosition.X, TopBorder);
                }
                else if (MousePosition.Y > BottomBorder)
                {
                    Cursor.Position = new Point(MousePosition.X, BottomBorder);
                }
                // links oder rechts
                if (MousePosition.X < LeftBorder)
                {
                    Cursor.Position = new Point(LeftBorder, MousePosition.Y);
                }
                else if (MousePosition.X > RightBorder)
                {
                    Cursor.Position = new Point(RightBorder, MousePosition.Y);
                }

Wisst ihr ne Möglichkeit wie ich einfach den Cursor auf diese Picturebox begrenzen kann?

gruß Daniel
 
Die Frage ist WANN die Maus eingegrenzt werden soll? Wenn der User auf die PictureBox klickt? Wann soll die Maus wieder freigegeben werden?
 
Ja, bei klick soll sie eingegrenzt werden. Drüber ist ne if Abfrage ob gerade geklickt wurde. Dieser Code ist dann in MouseMove untergebracht.
 

Neue Beiträge

Zurück