2009-04-16 9 views
1

Wie ändert sich die Winforms-Spurleiste am einfachsten, wenn ein Benutzer darauf klickt, springt die Spurleiste an die Position der Maus ?Wie verhält sich eine Winform-Spurleiste (Schieberegler) auf einem Touchscreen-Monitor sinnvoll?

Standardmäßig bewegt sich die Trackleiste auf halbem Weg zwischen der aktuellen Position und dem Mausklick.

Update: Ich versuche, dies zu tun, damit ich die Spurleiste auf einem Touchscreen verwenden kann. Mit einem Touch-Screen ist das Ziehen sehr schwer, daher ist es notwendig, dass die Track-Leiste direkt dorthin springt, wo der Benutzer tippt.

+0

Das Standardverhalten ist für das Track-Feld, um eine Entfernung zu verschieben, die von "LargeChange" angegeben wird, nicht die Hälfte der Entfernung zwischen der Box und dem Klick. –

+0

Danke für die Info, ich habe nie wirklich verstanden, was es macht, ich dachte immer, es wäre ein bisschen zufällig. –

Antwort

2

Ich habe es noch nie gemacht, aber ich würde beginnen, indem ich auf die Stelle des Mausklicks schaue. Ich konnte dann herausfinden, wie weit der Track durch die aktuelle Ausdehnung der Trackbar entfernt wurde, und den Ort des Trackers auf diesen Punkt setzen.

Ich würde damit beginnen, die Steuerung zu überschreiben und die mausbezogenen Ereignisfunktionen (OnMouseDown(), z.B.) zu manipulieren. Beachten Sie, dass es in einigen Fällen wichtig sein kann, die Implementierung einer überschriebenen Funktion in der Basisklasse aufzurufen. Achten Sie darauf, dass Sie sie von Fall zu Fall berücksichtigen. (Ich bin gerade davon betroffen, so ist es frisch in meinen Gedanken.)

Beachten Sie, dass Sie nur das Verhalten von Standard-Steuerelementen auf diese Weise ändern sollten, wenn Sie einen zwingenden Grund haben. Sie sind Standard, weil sie sich in vielen Hunderttausenden von Programmen auf vorhersehbare Weise verhalten. Etwas zu machen, das sich nur für Ihr Programm anders verhält, kann die Principle of Lease Astonishment verletzen. Der einzige Trackbar, an den ich denke, dass ich mich so verhalten werde, wie du es beschreibst, ist für irgendeinen Media Player.

Bearbeiten: Basierend auf Ihrem Kommentar, ja, ich denke, Sie haben einen zwingenden Grund. :)

+1

Ja, ich verstehe das, das einzige Problem ist, dass meine Software auf einem Touchscreen läuft und das Standard-Trackbar-Verhalten auf einem Touchscreen wirklich nicht funktioniert. Im Grunde genommen ist alles, was das Ziehen fast unmöglich macht, die beste Lösung, die ich mir vorstellen konnte, war, den Schieberegler direkt dorthin springen zu lassen, wo der Benutzer geklickt hat. –

+0

Ah, guter Gedanke. Jetzt kenne ich zwei Szenarien. Danke für die Klarstellung. :) –