ScrollChange:月送りの単位をカスタマイズ
Windows Forms の MonthCalendar では、ScrollChange を使って「« 前月/翌月 »」ボタンを押したときの月送りのステップを自由に変えられます。月単位・四半期単位・年単位など、用途に合わせて最短で調整する方法を解説します。
説明
ScrollChange は、ユーザーがカレンダーの左右のスクロールボタンを押したときに何カ月進める/戻すかを指定する整数プロパティです。例えば、1 なら通常の月送り、3 なら四半期(3カ月)単位、12 なら 1 年単位のジャンプになります。
ポイント:
・表示月数(CalendarDimensions)とは独立して動作します。
・大きくジャンプさせるほど素早く目的期間へ移動できますが、行き過ぎやすさとのバランスを取りましょう。
・入力/選択ロジック(SelectionStart/SelectionEnd など)には影響せず、ナビゲーションの移動量のみを変えます。
サンプルコード(極力短く)
1カ月/3カ月/12カ月の切替ボタンだけを持つ最小サンプルです。
using System;
using System.Windows.Forms;
class MainForm : Form
{
MonthCalendar cal = new MonthCalendar { Dock = DockStyle.Fill };
public MainForm()
{
Text = "MonthCalendar - ScrollChange";
var panel = new FlowLayoutPanel { Dock = DockStyle.Top, AutoSize = true };
var b1 = new Button { Text = "1カ月送り" };
var b3 = new Button { Text = "3カ月送り(四半期)" };
var b12 = new Button { Text = "12カ月送り(1年)" };
b1.Click += (s, e) => cal.ScrollChange = 1;
b3.Click += (s, e) => cal.ScrollChange = 3;
b12.Click += (s, e) => cal.ScrollChange = 12;
panel.Controls.AddRange(new Control[] { b1, b3, b12 });
Controls.Add(cal);
Controls.Add(panel);
}
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.Run(new MainForm());
}
}
つまづきポイント
1) 表示が複数月のときの動き方が直感と違う
月送りの量は ScrollChange が決め、表示レイアウトは CalendarDimensions が決めます。期待どおりに動かないときは両者を見直しましょう。
2) たくさん飛びすぎる/戻りすぎる
操作ミスが増える場合はステップを小さく(例:3 → 2)したり、別途「今日へ戻る」ボタンを用意すると UX が安定します。
3) 選択範囲が勝手に変わる?
ScrollChange は表示位置だけを動かします。選択が変わるのはユーザー操作やコードでの設定によるものです。
まとめ
ScrollChange を適切に設定するだけで、カレンダーの月送り操作を業務に最適化できます。月単位(1)、四半期(3)、年単位(12)など、チームや画面の目的に合わせたステップを選定しましょう。

コメント