如何在TrackBar中使用浮点数

时间:2010-01-22 02:03:20

标签: c# .net visual-studio controls

我正在使用TrackBar控件。默认情况下,其值为int32。我真的想使用十进制值,因此使用可以更精细地选择。如何让TrackBar控件接受浮点数?

2 个答案:

答案 0 :(得分:18)

您可以使用乘数。比如说,你想让你的TrackBar控件从0到5增加0.01。只需将Minimum设置为0,将Maximum设置为500,然后将其设置为1。

当您设置浮动值时,将其乘以100,并将其用于TrackBar值。

您应该能够以这种方式获得任何(实际)精度,因为TrackBar可以使用整数,并且具有Int32的完整数据范围。这比用户界面要求的精度要高得多。

答案 1 :(得分:4)

另一个想法是从TrackBar 继承并以Reed Copsey建议使用整数并乘以精度因子的方式模拟自定义类中的浮点值。

对于小浮点值,以下工作非常简洁:

class FloatTrackBar: TrackBar
{
    private float precision = 0.01f;

    public float Precision
    {
        get { return precision; }
        set
        {
            precision = value;
            // todo: update the 5 properties below
        }
    }
    public new float LargeChange
    { get { return base.LargeChange * precision; } set { base.LargeChange = (int) (value / precision); } }
    public new float Maximum
    { get { return base.Maximum * precision; } set { base.Maximum = (int) (value / precision); } }
    public new float Minimum
    { get { return base.Minimum * precision; } set { base.Minimum = (int) (value / precision); } }
    public new float SmallChange
    { get { return base.SmallChange * precision; } set { base.SmallChange = (int) (value / precision); } }
    public new float Value
    { get { return base.Value * precision; } set { base.Value = (int) (value / precision); } }
}