如何使用TrackBar浮点数

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

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

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

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

另一个想法是inheritance 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); } } }