C#のスクロールバーの罠

現場の別プロジェクトでC#でコーディングをしている方から質問がありました。
「垂直スクロールバー(VScrollBar)がMinimumとMaximumというプロパティを持っているのに
画面でスクロールバーを移動させてもValueというプロパティがMaximumにならないんです
が・・・。」というもの。

例えば、Minimumが0でMaximumが100のときに、スクロールバーを移動しながらValueの値を
確認すると80くらいで一番下までスクロールしてしまうのです。
確かに私もVisualStudioでのコーディング初心者の時には不思議に思いました。
・・・が、ものすごく単純なことで、スクロールのつまみ(?ボタン?)の高さがあるので
移動できないのです。スクロールバーは100の高さがあるのですが、つまみ部分の高さが20
あれば80(100-20=80)までしか移動できない、という簡単な理屈です。

また、別件ですが、コントロールのAutoScrollをTrueにしてコントロールのスクロール位置を
制御する場合、VScrollBarのValueではなくコントロールが持つAutoScrollPositionに値を
設定したほうが簡単にスクロール位置を制御できて便利です。

というようなことを雑談し無事にやり過ごしました。
いきなり聞かれると忘れていることもあったりして、毎回、どきっとしながら受け答えしています。