どのように私はトラックバー(スライダー)に不透明度をWinFormsのバインドすることができます

StackOverflow https://stackoverflow.com/questions/2567799

質問

私はそのBindingSourceOpacityという名前のint型プロパティがありDataSourceとWinフォームを持っています。また、私はWinフォームのTrackBarを制御するために使用することをWinフォーム上Opacityを持っています。

私はValue(1)〜TrackBar(0)から変数を変更しますOpacityをスライディング、うまくTrackBarTrackBar.Minimumとその機能にTrackBar.Maximumプロパティをバインドしました。

Opacityの値のみ(TrackBarのように行います)+/- 1ではなく+/- 0.1かそこらで最小から最大まで行くので、

私はまた、しかし、この値にWinフォームのOpacityプロパティをバインドしましたそれが適切にWinフォームをフェードしません。その代わり、0はそれを不透明になりますと1が目に見える完全に電源を入れます。

Iアーキテクチャ内で動作する方法を必要とするが、上述のが、1よりも小さい定義増分で0から1までの値を変更するTrackBarを得る。

役に立ちましたか?

解決

私はこれを行うにはクリーンな方法は、同じ名前のUserControl特性を有するTrackBarValueSmallChangeMinimumMaximumプロパティを隠す直接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 OpacityForSliderValueを拘束したことTrackBar(または類似したもの)を持つデータクラスを持っています。

0-100へ

設定スライダー最小値と最大値と

あなたのデータクラスにこれを追加
public double OpacityForForm
{
    get { return this.OpacityForSlider / 100; } 
}

今すぐではなくOpacity

よりも、それにあなたのWinForms OpacityForSliderをバインド
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top