65.9K
CodeProject 正在变化。 阅读更多。
Home

VB.NET 2010 中的货币文本框

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2010年7月12日

GPL3

4分钟阅读

viewsIcon

84910

downloadIcon

3838

此组件将用作自动格式化货币值的文本框。

引言

我当时正在制作一个会计软件,我意识到使用现成的文本框组件格式化货币效果不佳,因此我决定开发一个可以自动将输入的十进制值转换为例如“PhP987,654,321.09”的文本框。而且我应该说这是使用 Visual Basic 2010 制作的。但是,您可以将重要的文件 CurrencyTextBox.vb 复制到任何其他版本的 Visual Basic 并将其重新编译为组件类。

currencytextbox1.PNG currencytextbox2.PNG

背景

您需要对在项目中使用新组件有基本的了解。只需将此项目添加到您现有的解决方案中即可。然后,如果此新组件未在您自己的项目的工具箱中显示,您可能需要引用此项目,然后在引用后再次构建它。这需要您有一个现有的解决方案以及该解决方案中的您自己的 Windows 窗体项目,因为此组件仅适用于 Windows 窗体或其他允许您添加组件的应用程序。

Using the Code

以下是如何在您自己的解决方案或项目中使用的简单步骤:

  1. 下载代码。然后解压缩。
  2. 在解压缩的文件夹中,您会找到一个名为“CurrencyTextBox.sln”的解决方案文件和一个名为 CurrencyTextBox 的文件夹。转到该文件夹,您会找到几个其他文件夹和文件。您应该将它们全部复制到您的解决方案文件夹中。
  3. 然后在您的解决方案或项目中,通过“添加现有项目”添加组件项目。
  4. 现在您的项目和此组件的项目都在同一个解决方案中。重新生成组件(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 日:初始发布

如果我发现任何错误,我会及时通知您。

© . All rights reserved.