2009-04-16 2 views
1

Winformsのトラックバーを変更する最も簡単な方法は、ユーザーがクリックするとトラックバーがマウスの位置にジャンプするようにする方法です?Winformのトラックバー(スライダ)をタッチスクリーンモニタで適切に動作させる方法

デフォルトでは、トラックバーは現在の位置とマウスがクリックされた場所の中間に移動します。

更新:私はタッチスクリーン上でトラックバーを使用できるようにこれをしようとしています。タッチスクリーンでドラッグするのは本当に難しいので、トラックバーがユーザーがタップする場所にまっすぐジャンプする必要があります。

+0

デフォルトの動作では、トラックボックスが「LargeChange」で指定された距離だけ移動し、ボックスとクリック間の距離の半分は移動しません。 –

+0

情報をありがとう、私は本当にそれが何をやっていたことを理解したことはない、私はいつもそれは少しランダムだと思った。 –

答えて

2

私はそれをやったことはありませんが、私はマウスクリックの位置を見て始めます。次に、クリックがあったトラックバーの現在の範囲のどこまでを把握し、その場所にトラッカーの場所を設定することができました。

まず、コントロールをオーバーライドして、マウス関連のイベント関数(OnMouseDown()など)を操作してみましょう。場合によっては、オーバーライドされた関数の基本クラスの実装を呼び出すことが重要な場合がありますので、ケースバイケースで考慮してください。

非常にという魅力的な理由がある場合にのみ、この方法で標準コントロールの動作を変更する必要があることに注意してください(この点については、私は気にしていません)。彼らは何百/何千ものプログラムにわたって予測可能な仕方で行動するため、標準的です。あなたのプログラムだけで何か別の振る舞いをすると、Principle of Lease Astonishmentに違反する可能性があります。あなたが描いているように動作すると思うと思う唯一のトラックバーは、ある種のメディアプレーヤーのためのものです。

編集: あなたのコメントに基づいて、魅力的な理由があると思います。 :)

+1

ええ、私はこれを理解しています。唯一の問題は、ソフトウェアがタッチスクリーン上で動作し、デフォルトのトラックバーの動作が実際にタッチスクリーン上で動作しないことです。基本的には、それをほとんど不可能にすることを含む何かが、私が考えることができる最高のソリューションは、スライダーを直接ユーザーがクリックした場所にジャンプさせることでした。 –

+0

ああ、良い考え。今私は2つのシナリオを知っています。説明をありがとう。 :) –

関連する問題