どのように私はトラックバー(スライダー)に不透明度をWinFormsのバインドすることができます
-
24-09-2019 - |
質問
私はそのBindingSource
にOpacity
という名前のint型プロパティがありDataSource
とWinフォームを持っています。また、私はWinフォームのTrackBar
を制御するために使用することをWinフォーム上Opacity
を持っています。
私はValue
(1)〜TrackBar
(0)から変数を変更しますOpacity
をスライディング、うまくTrackBar
にTrackBar.Minimum
とその機能にTrackBar.Maximum
プロパティをバインドしました。
Opacity
の値のみ(TrackBar
のように行います)+/- 1ではなく+/- 0.1かそこらで最小から最大まで行くので、私はまた、しかし、この値にWinフォームのOpacity
プロパティをバインドしましたそれが適切にWinフォームをフェードしません。その代わり、0はそれを不透明になりますと1が目に見える完全に電源を入れます。
の Iアーキテクチャ内で動作する方法を必要とするが、上述のが、1よりも小さい定義増分で0から1までの値を変更するTrackBar
を得る。の
解決
私はこれを行うにはクリーンな方法は、同じ名前のUserControl
特性を有するTrackBar
、Value
、SmallChange
、Minimum
とMaximum
プロパティを隠す直接TickFrequency
からdouble
その継承を作成することだと思います
public partial class DoubleTrackBar : TrackBar
{
public DoubleTrackBar()
{
InitializeComponent();
}
private int _multiplier = 100;
[Browsable(true)]
public new double TickFrequency
{
get
{
return (double)base.TickFrequency / _multiplier;
}
set
{
base.TickFrequency = (int)(value * _multiplier);
}
}
[Browsable(true)]
public new double Minimum
{
get
{
return (double)base.Minimum / _multiplier;
}
set
{
base.Minimum = (int)(value * _multiplier);
}
}
[Browsable(true)]
public new double Maximum
{
get
{
return (double)base.Maximum / _multiplier;
}
set
{
base.Maximum = (int)(value * _multiplier);
}
}
[Browsable(true)]
public new double Value
{
get
{
return (double)base.Value / _multiplier;
}
set
{
base.Value = (int)(value * _multiplier);
}
}
[Browsable(true)]
public new double SmallChange
{
get
{
return (double)base.SmallChange / _multiplier;
}
set
{
base.SmallChange = (int)(value * _multiplier);
}
}
}
他のヒント
あなたはその後、データバインディングしている場合は、
あなたがにdouble OpacityForSlider
のValue
を拘束したことTrackBar
(または類似したもの)を持つデータクラスを持っています。
設定スライダー最小値と最大値と
あなたのデータクラスにこれを追加public double OpacityForForm
{
get { return this.OpacityForSlider / 100; }
}
今すぐではなくOpacity
OpacityForSlider
をバインド 所属していません StackOverflow