Laden...

Mittels Trackbar die Formposition verschieben

Erstellt von DeeJayExTasy vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.474 Views
D
DeeJayExTasy Themenstarter:in
4 Beiträge seit 2017
vor 5 Jahren
Mittels Trackbar die Formposition verschieben

Hallo liebe Coderz,

ich habe ein kleines Problem bei dem ich einen Denkanstoß gebrauchen kann
und zwar möchte ich mit einem Trackbar Control die Position einer Form verschieben.
Leider klappt es nicht so wie ich das möchte, ich würde gerne bei jeder Inkrementierung (+/-1)
der trackbar.Value Eigenschaft, die Position einer Form, in der Y Achse , ebenfalls um den Wert 1 inkrementieren. Wenn ich mittels Tastatur (Pfeil hoch bzw. Pfeil runter) den Wert der Trackbar anpasse funktioniert alles wie es soll, wenn ich allerdings mit der Maus den Schieberegler verschiebe, dann wird mein Event nicht nach jeder Inkrementierung ausgelöst, sondern je nachdem wie schnell ich den Regler verschiebe, nur alle x male.
Wie kriege ich das hin das mein Event bei jeder Inkrementierung ausgelöst wird?

mein System: Windows 7, Visual Studio 2015, c# Windows Forms Anwendung

meine trackbar eigenschaften: Maximum: 100, Minimum: 0, TickFrequency: 1

hier mein Event:

private void trackbar_Scroll(object sender, EventArgs e)
        {
            if (trackbar.Value > trackbarValue)
            {
                Form1.Location = new Point(Form1.Location.X, Form1.Location.Y + 1);
            }
            else
            {
                Form1.Location = new Point(Form1.Location.X, Form1.Location.Y - 1);
            }
            

            trackbarValue = trackbar.Value;

        }

Ich habe auch schon das ValueChanged Event ausprobiert, aber leider verhält es sich auch
nicht richtig, zwar etwas anders, aber auch nicht richtig.

Wäre für jede Hilfe dankbar.
Wenn etwas nicht verständlich ist oder weiterer Code benötigt wird, bitte sagen,
dann versuche ich es nochmal anders darzulegen bzw. stelle ich mehr Code zur Verfügung.

Vielen Dank schonmal

DeeJayExTasy

4.942 Beiträge seit 2008
vor 5 Jahren

Du solltest die Differenz als Kriterium nehmen:


int diff = trackbar.Value - trackbarValue;

Form1.Location = new Point(Form1.Location.X, Form1.Location.Y + diff);

trackbarValue = trackbar.Value;

2.298 Beiträge seit 2010
vor 5 Jahren

Wenn nichts hilft, nimm doch die Differenz zwischen dem Wert und dem letzten Wert für das verschieben statts fix 1.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

D
DeeJayExTasy Themenstarter:in
4 Beiträge seit 2017
vor 5 Jahren

Guten Morgen,

mit der Lösung von TH69 hat es jetzt geklappt, vielen Dank.

private void trackbar_Scroll(object sender, EventArgs e)
        {
              int diff = tb_distance.Value - trackbarValue;

              if(diff < 0)
              {
                   diff = diff * (-1);
              }

              if (trackbar.Value > trackbarValue)
              {
                   Form1.Location = new Point(Form1.Location.X, Form1.Location.Y + 1);
              }
              else
              {
                   Form1.Location = new Point(Form1.Location.X, Form1.Location.Y - 1);
               }


               trackbarValue = trackbar.Value;

        }

DeeJayExTasy