我有一个带有 BindingSource 的 winform,它的 Opacity 中有一个名为 DataSource 的 int 属性。我在 winform 上也有一个 TrackBar,我想用它来控制 winform 的 Opacity

我已经将 Value 上的 TrackBar 属性绑定(bind)到 Opacity 并且功能很好,滑动 TrackBar 会将变量从 TrackBar.Minimum (0) 更改为 TrackBar.Maximum (1)。

我还将 winform 的 Opacity 属性绑定(bind)到该值,但是,由于 TrackBar 的值仅在 +/-1 范围内从最小值到最大值,而不是 +/- .1 左右(就像 Opacity 那样),它不能正确淡化 winform。相反,0 将使其不透明,1 将使其完全可见。

我需要一种在上述架构中工作的方法,但是让 TrackBar 以小于 1 的定义增量将其值从 0 更改为 1。

最佳答案

我认为最简洁的方法是创建一个直接从 UserControl 继承的 TrackBar ,它隐藏 ValueSmallChangeMinimumMaximumTickFrequency 属性与同名 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);
        }
    }
}

关于c# - 如何将 winforms Opacity 绑定(bind)到 TrackBar(滑块),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2567799/

10-12 03:39