我有与有一个名为BindingSource在其Opacity一个int财产DataSource一个WinForm。我也有,我想用它来控制的winform的TrackBar在WinForm一个Opacity

我已经结合的Value属性上TrackBarOpacity和功能就好,滑动TrackBar将变量从TrackBar.Minimum(0)至TrackBar.Maximum(1)改变。

我还结合在WinForm的Opacity属性为这个值,但是,由于TrackBar的值仅由最小到最大在+/- 1而不是+/- 0.1左右(像Opacity一样),它无法正确褪色的winform。相反,0会把它不透明,1会把它完全可见。

<强>我需要一种方法来工作的体系结构内的上面描述,但得到TrackBar从0它的值改为1中所定义的增量小于1。

有帮助吗?

解决方案

我觉得这样做最彻底的方法是创建一个UserControl直接从TrackBar继承,隐藏与同名Value性能SmallChangeMinimumMaximumTickFrequencydouble属性:

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(或类似的东西)数据类,你已经绑定的ValueTrackBar到。

设置MIN和MAX至0-100和它添加到你的数据类滑块

public double OpacityForForm
{
    get { return this.OpacityForSlider / 100; } 
}

现在结合您的WinForms Opacity到,而不是OpacityForSlider

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top