Laden...

MouseMove - MouseEventArgs unzuverlässig?

Erstellt von Gerri3d vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.169 Views
G
Gerri3d Themenstarter:in
57 Beiträge seit 2017
vor 6 Jahren
MouseMove - MouseEventArgs unzuverlässig?

Ich will das Ereignis auslösen, wenn ich in einem bestimmten Bereich einer Form bin.

Es gibt mehrere Bereich die in einer List hinterlegt sind. Sobald das Ereignis angestoßen wird, Läuft eine Schleife durch und vergleicht die Cursorposition mit den Hinterlegten Objekten.

Nun wird oft erst nach wiederholtem eindringen in den Bereich das Event ausgelöst.

Gibt es noch etwas zu beachten?


        private void tabPageDxf_MouseMove(object sender, MouseEventArgs e)
        {
            if (pipeData.lengthX == 0 || pipeData.lengthX == 0)
            {
                return;                
            }

            // Update the mouse path that is drawn onto the Panel.
            int mouseX = e.X;
            int mouseY = e.Y;

            // load circles and check if in circle area            
            for (int i = 0; i < calculation.CircleList.Count; i++)
            {
                double vectorX = Convert.ToDouble(e.X) - ((Calculation.S_Circle)calculation.CircleList[i]).CsDrawX;
                double vectorY = Convert.ToDouble(e.Y) - ((Calculation.S_Circle)calculation.CircleList[i]).CsDrawY;
                int vector = Convert.ToInt32( Math.Sqrt( vectorX * vectorX + vectorY * vectorY));
                if ( (((Calculation.S_Circle)calculation.CircleList[i]).DiameterDraw+5) / 2 > vector)
                {
                    textBoxCircleInfo.Text = ((Calculation.S_Circle)calculation.CircleList[i]).ID + "\r\n"
                                            + "Höhe: " + Convert.ToString(Math.Round(((Calculation.S_Circle)calculation.CircleList[i]).height,0)) + " mm \r\n"
                                            + "Höhe (inkl. Klöpperboden): " + Convert.ToString(Math.Round(((Calculation.S_Circle)calculation.CircleList[i]).height + pipeData.kloepperseam[0],0)) + " mm \r\n"
                                            + "Winkel: " + Convert.ToString(Math.Round(((Calculation.S_Circle)calculation.CircleList[i]).angle,1)) + "°";
                    textBoxCircleInfo.BackColor = ((Calculation.S_Circle)calculation.CircleList[i]).ColorDraw;                     
                    break;
                }
                
            }


this.tabPageDxf.MouseMove += new System.Windows.Forms.MouseEventHandler(this.tabPageDxf_MouseMove);

1.040 Beiträge seit 2007
vor 6 Jahren

Das Event MouseMove ist mMn schon zuverlässig.

Die Frage ist, wie lange dauert dein EventHandler?
Normalerweise kommt das MouseMove ja ständig, wenn du in einem bestimmten Bereich die Maus bewegst. Dauert die Abarbeitung des EventHandlers jetzt etwas länger, wird das Event nicht mehr ständig gefeuert.

G
Gerri3d Themenstarter:in
57 Beiträge seit 2017
vor 6 Jahren

du hats recht, es scheint, dass ich die Bereich, die ich auswerte verschoben habe.