我有一个带有 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
,它隐藏 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 Opacity 绑定(bind)到 TrackBar(滑块),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2567799/