【C#】【Form】TrackBar ~ スライダー ~

■ はじめに

 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");
        }
      }
    }
  }
}

関連記事

C#】画像処理 ~ シャープネス ~

https://blogs.yahoo.co.jp/dk521123/37837353.html

ユーザコントロール(UserControl)

https://blogs.yahoo.co.jp/dk521123/21165720.html