C#におけるトラックバー(スクロールによる数値変更)の使い方
C#におけるトラックバー(スクロールによる数値変更)の使い方についてご紹介します。
目次
条件
- Visual Studio 2017
デザイン
コンポーネントの配置
ツールボックス > すべてのWindowsフォーム > TrackBarを選択します。
FormにTrackBarを配置します。
ツールボックス > コモン コントロール > TextBoxを選択します。
FormにTextBoxを配置します。
コンポーネントのプロパティ設定
TrackBarのプロパティを以下のように設定します。
- Maximum:50
- Minimum:-50
- Value:0
TextBoxのプロパティを以下のように設定します。
- Text:0
- TextAlign:Right
実装
イベントハンドラの設定
TrackBarのプロパティ > イベントで、Scrollをダブルクリックします。
以下のように、スクロールのイベントで実行される関数が自動生成されます。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace sample3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
}
}
}
また、TrackBarのScrollイベントに生成された「trackBar1_Scroll」が割り当てられます。
処理の実装
トラックバーをスクロールすることで、テキストボックスに移動分の値を反映する処理を実装します。
具体的には、トラックバーがスクロールされた際、以下のような処理を実装します。
- トラックバーの値について、前回との差分を計算。
- テキストボックスに、計算したトラックバーの差分値を反映。
- トラックバーの前回値を現在値で更新。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace sample3
{
public partial class Form1 : Form
{
private int trackBar1_value_before = 0; // トラックバーの前回値
public Form1()
{
InitializeComponent();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
int diff = trackBar1.Value - trackBar1_value_before; // 前回との差分を計算
textBox1.Text = (int.Parse(textBox1.Text) + diff).ToString(); // テキストボックスに差分を反映
trackBar1_value_before = trackBar1.Value; // 前回の値を現在値で更新
}
}
}
実行結果
右(プラス方向)にスクロールした場合
左(マイナス方向)にスクロールした場合
他の例
もちろん、テキストボックスの値が0でなくても同様の動作となります。
(以下は、テキストボックスの値がデフォルト100の場合)
参考
CodePanic!:トラックバー(TrackBar)の使い方
http://codepanic.itigo.jp/cs/trackbar.html













