C#のWinFormsでHScrollBarのMaximum、LargeChangeとValueの関係について

C# コンピュータ
C#

HScrollBarのValueがスライドを前回に動かしても、Maximumの値になっていいないようなので確認してみました。
サンプルソース

using System.Diagnostics;

namespace HScrollBarSample;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        HScrollBar hScrollBar = new()
        {
            Location = new Point(50, 50),
            Size = new Size(200, 30),
            Minimum = 0,
            Maximum = 100,
            LargeChange = 10,
        };
        this.Controls.Add(hScrollBar);
        hScrollBar.Scroll += (s, e) =>
        {
            Debug.Print("Value:{0}", hScrollBar.Value);
        };
    }
}


水平スクロールバーを左端に移動したところValueは0でしたので、Minimumプロパティと一致します。


水平スクロールバーを右端に移動したところValueは91でした。Maximumプロパティの値100と一致しません。
こちらの値は、Maximum(100)-LargeChange(10)+1の計算で求められます。

確認していませんが多分VHScrollBarも同じ理屈で動いていると思われます。

コメント