VB.NET 2010 中的货币文本框





5.00/5 (2投票s)
此组件将用作自动格式化货币值的文本框。
引言
我当时正在制作一个会计软件,我意识到使用现成的文本框组件格式化货币效果不佳,因此我决定开发一个可以自动将输入的十进制值转换为例如“PhP987,654,321.09
”的文本框。而且我应该说这是使用 Visual Basic 2010 制作的。但是,您可以将重要的文件 CurrencyTextBox.vb 复制到任何其他版本的 Visual Basic 并将其重新编译为组件类。
背景
您需要对在项目中使用新组件有基本的了解。只需将此项目添加到您现有的解决方案中即可。然后,如果此新组件未在您自己的项目的工具箱中显示,您可能需要引用此项目,然后在引用后再次构建它。这需要您有一个现有的解决方案以及该解决方案中的您自己的 Windows 窗体项目,因为此组件仅适用于 Windows 窗体或其他允许您添加组件的应用程序。
Using the Code
以下是如何在您自己的解决方案或项目中使用的简单步骤:
- 下载代码。然后解压缩。
- 在解压缩的文件夹中,您会找到一个名为“CurrencyTextBox.sln”的解决方案文件和一个名为 CurrencyTextBox 的文件夹。转到该文件夹,您会找到几个其他文件夹和文件。您应该将它们全部复制到您的解决方案文件夹中。
- 然后在您的解决方案或项目中,通过“添加现有项目”添加组件项目。
- 现在您的项目和此组件的项目都在同一个解决方案中。重新生成组件(
CurrencyTextBox
)项目,以便它能在您其他需要 GUI 组件的项目的工具箱中显示。
接下来,我将详细介绍代码的编写方式。在下面的代码列表中,请务必将这些常数的值更改为您偏好的设置。如您所见,它设置为“en-PH
”,DECIMALPOINT
设置为 46
。
Const LOCATIONCODE As String = "en-PH"
Const DECIMALPOINT As Integer = 46
Const CURRFORM As String = "C"
在 LOCATIONCODE
中,它指的是您货币的符号。在其当前设置下,文本框中显示的十进制值将类似于:Php123.00
。如果您想将其更改为美元,请使用“en-US
”,如果您想获得标准值的完整列表,请参阅 MSDN 上的这个 链接,其中讨论了 Culture Info 类。
接下来是 DECIMALPOINT
选项。您应该根据您的偏好进行更改。有些人使用以下格式显示十进制数:“789.456,12
”。他们使用 ',
' 作为小数点,使用 '.
' 作为千位分隔符来显示数字。然而,此组件最初设置为使用以下格式:“789,456.25
”,使用 ',
' 作为千位分隔符,使用 '.
' 作为小数点。无论如何,如果您想将其更改为第一个显示的格式(“789.456,12
”),您应该将 46
更改为 44
。这些只是 '.
' 和 ',
' 的 ASCII 值。
编辑:我差点忘了!CURRFORM
,您必须为其分配“C”。因为我们使用货币作为格式。有关此内容的更多信息,请参阅此 链接。
最后,在使用该组件时,您需要了解如何为其分配文本以及如何从中检索值。将十进制值分配给 textbox
的方式如下:
Dim myDecimal as Decimal = 9876543.21
CurrencyTextBox1.Text = myDecimal ' Assigning a decimal (strict=off)
或
CurrencyTextBox1.Text = "9876543.21" ' Assigning a text or an integer
CurrencyTextBox1.Text = MyInteger ' Assigning an integer (strict=off)
分配一个无法转换为十进制的 string
将导致错误。在上面的示例中,只有当您的项目选项中启用了“Option Strict”时,您才能分配 string
。并且为了获取货币文本框的值,请使用只读值属性。
Dim MyDecimal As Decimal
MyDecimal = CurrencyTextBox1.Value
该语句将返回一个十进制数。
关注点
代码的大部分内容是在网上找到的。其中一个特别重要的部分是我在这个 链接 上找到的,但是这个只支持十进制,并且需要大量的修改才能用于货币,但是我的工作是值得的,因为我现在正在一个会计软件中使用它。而且我应该感到感激,我的客户非常喜欢它,比他们之前使用的版本。
历史
- 2010 年 7 月 12 日:初始发布
如果我发现任何错误,我会及时通知您。