Visual Basic 8 (2005)Windows VistaWindows 2003Visual Studio 2005Windows 2000Windows XP.NET 2.0Windows Forms中级开发Visual StudioWindows.NETVisual Basic
带单位测量的 NumericUpDown






3.57/5 (16投票s)
如何创建一个带有单位计量的 NumericUpDown 控件。支持 Vista 样式!
该控件由 CTR (centro-tecnologia-rocci) 的 Rocci Luca 和 D'Andrea Vito 设计。
引言
该控件是经典控件 NumericUpDown
的一个演进。numericUpDown
控件可视化并返回一个属性值,一个十进制值,但是如果我们还需要指定计量单位来增加一个数值呢?这时,我们的 UpDownEx
控件就派上用场了。我们的控件返回一个双精度浮点数值,并可视化一个双精度浮点类型的值和一些指示计量单位的文本。增量相对于可视化数字的精度。
例如,如果您输入一个带有三位小数的数字,则增量将为 0.001。此外,每次在计量单位阶梯中,无论是增加还是减少,都是自动的。
代码
UpDownEx
代码继承自“Control
”类,并包含一个标准的 NumericUpDown
控件和一些属性,例如一个指示计量单位的 Array
。
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
计量单位
Factor
:表示两个计量单位之间的步长Maximum
:表示最大值Minumum
:表示最小值MeasureUnits
:表示包含计量单位的字符串数组
值
FormattedValues
:表示带有计量单位的值UnformattedValues
:表示值
支持 Windows Vista 样式