我如何可以绑定一个WinForms不透明度到的TrackBar(滑块)
-
24-09-2019 - |
题
我有与有一个名为BindingSource
在其Opacity
一个int财产DataSource
一个WinForm。我也有,我想用它来控制的winform的TrackBar
在WinForm一个Opacity
。
我已经结合的Value
属性上TrackBar
到Opacity
和功能就好,滑动TrackBar
将变量从TrackBar.Minimum
(0)至TrackBar.Maximum
(1)改变。
我还结合在WinForm的Opacity
属性为这个值,但是,由于TrackBar
的值仅由最小到最大在+/- 1而不是+/- 0.1左右(像Opacity
一样),它无法正确褪色的winform。相反,0会把它不透明,1会把它完全可见。
<强>我需要一种方法来工作的体系结构内的上面描述,但得到TrackBar
从0它的值改为1中所定义的增量小于1。强>
解决方案
我觉得这样做最彻底的方法是创建一个UserControl
直接从TrackBar
继承,隐藏与同名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);
}
}
}
其他提示
如果你正在数据绑定,那么你必须具有double OpacityForSlider
(或类似的东西)数据类,你已经绑定的Value
的TrackBar
到。
设置MIN和MAX至0-100和它添加到你的数据类滑块
public double OpacityForForm
{
get { return this.OpacityForSlider / 100; }
}
现在结合您的WinForms Opacity
到,而不是OpacityForSlider
不隶属于 StackOverflow