スクロールバーの勘違い


スクロールバーのMinmumプロパティを0、Maximumプロパティを100、LargeChangeプロパティを100に設定するとスクロールボックス(上下する部分です)が目いっぱいの大きさで表示されると思ったんですが違うんですね。


移動可能な幅はMaximun - Minimum + 1なんですね。

LargeChangeプロパティは、スクロールボックスの長さを読み替えることができそうです。


つまり上記のようなプロパティ設定でも、Valueは0~1をとることができます。


somethingnewのブログ-スクロールバー

Minが0、Maxが100なら幅は101になるんですね。

だからLargeChangeプロパティに100を設定しても、Valueは0,1の値がとれることがわかります。

イベントプロパティ一覧にマウスホイールに関するイベントはないので別途追加する必要があります。



private void Form1_Load(object sender, EventArgs e)
{
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);
}


private void Form1_MouseWheel(object sender, MouseEventArgs e)
{


}


イベントハンドラの引数 MouseEventArgs e の e.Delta にホイールをまわしたときの移動量が入ります。

奥に回すと+120、手前に回すと-120って値が入るみたいです。

(1ステップの回転で+120/-120の値が入ります。連続して回すと120の倍数が入ります。)


上記はLoadでイベント追加してますが、デザイナで生成されたコード(Form1.Designer.cs)に追加してもいいと思います。


//
// Form1
//

:

this.Load += new System.EventHandler(this.Form1_Load);

this.MouseWheel += new System.MouseEventHandler(this.Form1_MouseWheel);