我有一个带有 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。
最佳答案
我认为最简洁的方法是创建一个直接继承自 TrackBar
的 UserControl
,它隐藏了 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);
}
}
}
关于c# - 如何将 winforms 不透明度绑定(bind)到 TrackBar( slider ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567799/