Forum: PC-Programmierung c# TrackBar Problem


von C# Beginner (Gast)


Lesenswert?

Hallo,
ich habe einen media-player geschrieben (mit einer speziellen Funktion, 
die der Windows Media Player nicht hat).
Hierzu verwende ich das Mci-Interface.
Dabei will ich eine TrackBar benutzen, die die aktuelle Position im Song 
anzeigt, und wo ich auch im Song woanders hinspringen kann. (so wie beim 
Windows Media Player auch).
Dabei verwende ich TrackBar.
Die Position veraendere ich im Timer (Intervall 1sec), wo ich die 
Position veraendere
 trackbar.Value = mci.value;

Positionsveraenderung fange ich im OnMouseCaptureChanged Event ab
  mci.Play(trackbar.Value);

Das ganze funktioniert nicht besonders schoen. Wenn ich innerhalb einer 
Sekunde den Trackbar-Knopf verschiebe, klappt es. Wenn ich laenger 
brauche, zeichnet ihn die Timer-Funktion an die urspruengliche Position.

Ich muesste das Aktualisieren im Timer ausschalten, wenn ich anfange, 
mit der Maus die Position zu verschieben.

Wie koennte man das machen?

von Arc N. (arc)


Lesenswert?

Es sollte reichen, den Timer im MouseDown-Event des TrackBars 
auszuschalten und im MouseUp wieder anzuschalten.

p.s. warum OnMouseCaptureChanged und nicht im normalen Scroll-Event

von C# Beginner (Gast)


Lesenswert?

Arc Net schrieb:
> p.s. warum OnMouseCaptureChanged und nicht im normalen Scroll-Event

Ich will, dass nur 1x pro Positionsveraenderung das Event ausgeloest 
wird.
So lange man mit der Maus den Knopf an die gewuenschte Position schiebt, 
soll die Musik normal weiterspielen und erst beim Loslassen soll die 
Musik "springen".

von C# Beginner (Gast)


Lesenswert?

Arc Net schrieb:
> p.s. warum OnMouseCaptureChanged und nicht im normalen Scroll-Event

Ich dachte urspruenglich, dass CaptureChanged auch ausgeloest wird, wenn 
man ANFAENGT, mit der Maus zu ziehen. Da haette ich das Timergesteuerte 
Neuzeichnen deaktivieren koennen.
Aber komischerweise wird es nur einmal ausgeloest beim Uebergang
Capture -> Nicht Capture

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.