This control was designed by CTR (centro-tecnologia-rocci), Rocci Luca & D'Andrea Vito
Introduction
This control is an evolution of the classic control NumericUpDown
. The control numericUpDown
visualizes and returns through a property value, a decimal value, but what if we need to increment a numeric value also specifying the measure? At this point, our UpDownEx
control enters the game. Our control returns a double value and visualizes a type value double and some text that indicates the measure. The increment is relative to the precision of the visualized number.
For example, if you enter a number with three decimal digits, the increment will be in 0.001. Plus every step in the measure stair is automatic, either in increment or in decrement phases.
The code
The UpDownEx
code inherits the "Control
" class and includes a NumericUpDown
standard control and some properties like an Array
that indicates the measures.
Private Sub Format()
Dim str_Format As String
If UpDown.Value = int_Factor * (int_UnitsActual) And int_UnitsActual > 0 Then
int_UnitsActual -= 1
UpDown.Value -= 1
UpDown.DecimalPlaces -= 1
ElseIf UpDown.Value = int_Factor * (int_UnitsActual + 1) And _
int_UnitsActual < str_Units.Length Then
int_UnitsActual += 1
UpDown.Value += 1
UpDown.DecimalPlaces += 1
End If
UpDown.Increment = dbl_Decimals(UpDown.DecimalPlaces)
Dim i As Integer
str_Format = "#,"
For i = 0 To UpDown.DecimalPlaces - 1
str_Format += "#"
Next
str_Format += "0."
For i = 0 To UpDown.DecimalPlaces - 1
str_Format += "0"
Next
dbl_Value = UpDown.Value - (int_Factor * int_UnitsActual)
Me.TextControl.Text = dbl_Value.ToString(str_Format) & " " & str_Units(int_UnitsActual)
End Sub
Units of measure
Factor
: Represents the step between two units of measure
Maximum
: Represents the max value
Minumum
: Represents the min value
MeasureUnits
: Represents an array of strings containing the units of measure
Values
FormattedValues
: Represents the value with the units of measure
UnformattedValues
: Represents the value
Windows Vista styles are supported: