c# - 如何将 winforms 不透明度绑定(bind)到 TrackBar( slider )

标签 c# winforms data-binding trackbar

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

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

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

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

最佳答案

我认为最简洁的方法是创建一个直接继承自 TrackBarUserControl,它隐藏了 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 不透明度绑定(bind)到 TrackBar( slider ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567799/

相关文章:

c# - 通过 Web 服务将数据从 Sql Server 移动到 Excel

c# - 如何将文件从独立存储复制到 skydrive

c# - 通过控制台运行 winform 应用程序

c++ - 没有更多的 C++ WinForms 项目?

c# - 查找确切的节点 C#

c# - 在 Visual Studio 中自动创建处理程序签名

C# - 代码处理顺序 - 奇怪的行为

c# - 绑定(bind)到 ListView 中的 WPF 组合框(2 向)

javascript - KnockoutJS 的 contenteditable 绑定(bind)

java - JFace TableViewer 应该对更改的列表使用react