2010-12-23 11 views
3

Dies ist wahrscheinlich eine Abfrage n00b. Ich habe eine Notwendigkeit, wo ich den Trackbar-Wert basierend auf einem Mouse-Down-Ereignis ändern möchte. Dies habe ich wie folgt erreicht:Wie kann ich den TrackBar als Reaktion auf Mausereignisse in C# verschieben?

private void MoveTrackBarToMouseClickLocation(TrackBar a_tBar, int a_mouseX) 
{ 
    // Jump to the clicked location 

     double dblValue; 
     dblValue = ((double)a_mouseX/(double)a_tBar.Width) * (a_tBar.Maximum - a_tBar.Minimum); 
     a_tBar.Value = Convert.ToInt32(dblValue); 
} 

Dieser Teil funktioniert gut. Ich habe Probleme, die Bildlauffunktion zu erhalten, während die Maustaste gedrückt wird. z.B. Wenn ich auf die Trackbar klicke und ich sage 50 mit der Maus nach unten, möchte ich nach rechts oder links scrollen (ab Wert = 50), während die Maus nicht bewegt wird.

Ich hoffe, ich habe mein kleines Problem klar gemacht. Jede Hilfe wird geschätzt. Dank

Antwort

2

Sie müssen Ihren Code in der MouseMove event sowie die MouseDown Ereignis auszuführen.

Dieses Ereignis tritt auf, wenn die Maus verschoben wird, während eine der Tasten gedrückt gehalten wird. Im Gegensatz dazu wird das MouseDown Ereignis, das Sie gerade behandeln nur einmal bei jedem Drücken der Maustaste ausgelöst. Deshalb bewegt sich die TrackBar nicht, wenn der Benutzer die Maus bewegt, aber beim ersten Drücken der Taste ordnungsgemäß funktioniert.

Sie haben nicht den Code angezeigt, wo Sie die Ereignishandler verdrahtet und/oder rufen Sie die MoveTrackBarToMouseClickLocation Funktion, so dass so spezifisch wie ich bekommen kann. Aber wenn Sie bereits das Ereignis MouseDown verdrahten konnten, sollte dies eine einfache Lösung sein.

+0

Ja, ich habe bereits das Mouse-Down-Ereignis angehakt, die MoveTrackBartoMouseClickedLocation() wird im Mouse-Down-Event-Handler aufgerufen ... – ababeel

+0

Danke jetzt sortiert :) – ababeel

Verwandte Themen