[.NET] Scrollbarコントロールの問題

C#でScrollbar(VScrollbar, HScrollbar)を使用したときに生じた問題について
スクロールのMaximum値を設定し実際に動かしてみるとなぜかValue値がMaximum値に到達することはなかった
(プログラム的に操作した場合はMAX値まで動くが(例えば.Value = .Maximum)、スクロールのボタンなどを押すと元に戻ってしまう)
理由はわからないが.LargeChange+1をマイナスされた数値が実質のMaximum値になってしまうことが原因のようだ
これが分かれば対処は簡単で…
Maximumを設定する処理の箇所では以下のようにする
(予めLargeChange値は設定しておく)

vScrollBar.Maximum = (本来のMAX値) + vScrollBar.LargeChange - 1;

プログラム的にValue値を動かすような処理を行っている場合の条件式は以下のようにする
(制限しないと意図しない部分までスクロールしてしまいます)

if (vScrollBar.Value < vScrollBar.Maximum - (vScrollBar.LargeChange-1)) { (Valueを加算・減算する処理) }

面倒くさいですが、これでまともに使えるようになります
少しプログラミングメモ的な記事が増えたのでカテゴリ化しました

1件のコメント

  1. AGENT: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB6.6; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; InfoPath.3; .NET4.0C; Lunascape 6.5.1.24246)
    同じ問題で悩んでおりました。
    .NETのバグなんでしょうかね。
    解決方法を教えて頂き、ありがとうございました。
    助かりました。

コメントを残す

メールアドレスが公開されることはありません。