■ はじめに
Windows Form で、スライダーを使おうと思って調べた。 そもそも、スライダーではなく、トラックバー(TrackBar)って名前だったので 少し探してしまった。。。
■ サンプル
https://blogs.yahoo.co.jp/dk521123/37837353.htmlより抜粋
float sharpness = (float) (trackBar1.Value / 100);
■ 主なプロパティ
AutoSize
* デフォルトは false (サイズ変更不可)
Orientation
* 「 Orientation.Horizontal(横)」「Orientation.Vertical(縦)」
TickStyle
* 目盛りの表示位置
■ スライダーに関するあれこれ
【1】数値スライダーの連動
数値(NumericUpDown)とスライダー(TrackBar)を連動することを調べてたら 以下のサイトが見つかったので、ポイントをメモ。http://d.hatena.ne.jp/uyamae/20090716/1247734789
最終的には、よく使うのであれば、ユーザコントロール(UserControl)化しとくことも 考慮しておいた方がいいかも。https://blogs.yahoo.co.jp/dk521123/21165720.html
コントローラ
* NumericUpDown x 1 * TrackBar x 1 * BindingSource x 1 << !! Point !!手順
[1] 以下の「サンプル」を参考に実装し、ビルドする(INotifyPropertyChangedを継承したクラスを実装) [2] BindingSourceのDataSource を設定(「BindingSource.DataSource = SampleForm.NumericBoxWithSlider」) [3] NumericUpDown / TrackBar の DataBindings の ValueをBindingSourceを設定する(Value:bindingSource1 - Value)サンプル
using System; using System.ComponentModel; using System.Windows.Forms; namespace SampleForm { public partial class Form2 : Form { public Form2() { InitializeComponent(); this.bindingSource1.DataSource = new NumericBoxWithSlider(); } } /// <summary> /// NumericUpDown とTrackBar にバインドされるデータ /// </summary> public class NumericBoxWithSlider : INotifyPropertyChanged { /// <summary> /// INotifyPropertyChanged から継承したイベントデリゲート /// </summary> public event PropertyChangedEventHandler PropertyChanged; /// <summary> /// イベント通知 /// </summary> /// <param name="info"></param> private void NotifyPropertyChanged(String info) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(info)); } } private int value; public int Value { get { return this.value; } set { if (value != this.value) { this.value = value; // このプロパティ名を渡してイベント通知 NotifyPropertyChanged("Value"); } } } } }