在开发财务软件时,经常需要处理货币格式的输入和显示。然而,标准的文本框组件在处理货币格式时表现并不理想。因此,决定开发一个自定义的货币文本框组件,它能够自动将输入的十进制数值转换为货币格式,例如 "Php987,654,321.09"。这个组件是用Visual Basic 2010开发的,但是也可以将重要的文件 "CurrencyTextBox.vb" 复制到其他版本的Visual Basic中,并重新编译为组件类。
要在项目中使用这个组件,需要了解如何在项目中添加新的组件。简单地将这个项目添加到现有的解决方案中即可。如果这个新组件没有在项目工具箱中显示出来,可能需要引用这个项目,然后在引用后重新构建它。这需要有一个现有的解决方案,以及在该解决方案中的自己的Windows Forms项目,因为这个组件只适用于Windows Forms或其他可以让添加组件的环境。
以下是在解决方案或项目中使用这个组件的简单步骤: 1. 下载代码。然后解压缩。 2. 在解压缩的文件夹中,会找到一个名为 "CurrencyTextBox.sln" 的解决方案文件,以及一个名为 "CurrencyTextBox" 的文件夹。转到该文件夹,会发现几个其他的文件夹和文件。应该将它们全部复制到解决方案的文件夹中。 3. 然后在解决方案或项目中,使用 "添加现有项目" 来添加组件项目。 4. 现在项目和这个组件的项目都在一个解决方案中了。重新构建组件的(CurrencyTextBox)项目,这样它就会出现在所有需要GUI组件的工具箱中的其他项目中。
接下来,将更详细地解释代码是如何实现的。在下面的代码列表中,请确保根据偏好更改这些常量的值。如所见,它被设置为 "en-PH",而 DECIMALPOINT 被设置为 46。
VB.NET
Const LOCATIONCODE As String = "en-PH"
Const DECIMALPOINT As Integer = 46
Const CURRFORM As String = "C"
在 LOCATIONCODE 中,它指的是货币符号。在当前设置中,文本框中显示的小数值将类似于这样:Php123.00。如果想将其更改为美元,请使用 "en-US"。如果想查看标准值的完整列表,请参考这个链接,它讨论了 CultureInfo 类。
接下来是 DECIMALPOINT 选项。应该根据偏好进行更改。有些人在表示小数时使用这种格式:"789.456,12"。他们使用 ',' 作为小数点,使用 '.' 作为每组三位数字的分隔符。这个组件最初设置使用的格式是:"789,456.25",使用 ',' 作为每组三位数字的分隔符,使用 '.' 作为小数点。无论如何,如果想更改为首先显示的格式("789.456,12"),应该将 46 更改为 44。这些只是 '.' 和 ',' 的ASCII值。
最后,在组件的使用中,需要知道如何分配文本和从中检索值。将十进制值分配给文本框的方式如下:
VB.NET
Dim myDecimal as Decimal = 9876543.21
CurrencyTextBox1.Text = myDecimal.ToString("C")
' 分配一个十进制值(strict=off)
或者:
VB.NET
CurrencyTextBox1.Text = "9876543.21"
' 分配一个文本或整数
或者:
VB.NET
CurrencyTextBox1.Text = MyInteger.ToString()
' 分配一个整数(strict=off)
如果尝试分配一个无法转换为十进制的字符串,将导致错误。在上面的例子中,只有在项目选项中启用了 strict 选项时,才能分配字符串。为了获取货币文本框的值,请使用只读的 Value 属性。
VB.NET
Dim MyDecimal As Decimal
MyDecimal = CurrencyTextBox1.Value
' 该语句将返回一个十进制值。