2

我需要一个在其中保留美元符号的文本框。我不希望用户被允许不在文本框中使用它。

这是我拥有的代码,它做得很好。现在我只需要在开头以某种方式硬编码 $ 。

 Private Sub txtPriceAmount_KeyDown(ByVal sender As Object, ByVal e As  System.Windows.Forms.KeyEventArgs) Handles txtPriceAmount.KeyDown
    If (e.KeyCode >= Keys.D0 And e.KeyCode <= Keys.D9) OrElse (e.KeyCode >= Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) OrElse e.KeyCode = Keys.Back Then
        acceptableKey = True
    Else
        acceptableKey = False
    End If

End Sub

Private Sub txtPriceAmount_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPriceAmount.KeyPress


    ' Check for the flag being set in the KeyDown event.
    If acceptableKey = False Then
        ' Stop the character from being entered into the control since it is non-numerical.
        e.Handled = True
        Return
    Else
        'must be in first position


        If e.KeyChar = Convert.ToChar(Keys.Back) Then
            If strCurrency.Length > 0 Then
                strCurrency = strCurrency.Substring(0, strCurrency.Length - 1)
            End If
        Else
            strCurrency = strCurrency & e.KeyChar
        End If

        If strCurrency.Length = 0 Then
            txtPriceAmount.Text = ""
        ElseIf strCurrency.Length = 1 Then
            txtPriceAmount.Text = "0.0" & strCurrency
        ElseIf strCurrency.Length = 2 Then
            txtPriceAmount.Text = "0." & strCurrency
        ElseIf strCurrency.Length > 2 Then
            txtPriceAmount.Text = strCurrency.Substring(0, strCurrency.Length - 2) & "." & strCurrency.Substring(strCurrency.Length - 2)
        End If
        txtPriceAmount.Select(txtPriceAmount.Text.Length, 0)

    End If
    e.Handled = True
End Sub

整个代码。

公共类 frmMidtermProject

Dim strCurrency As String = ""
Dim acceptableKey As Boolean = False


'Module level declarations
Structure Product
    Dim ProductIDString As String
    Dim DescriptionString As String
    Dim QuantityInteger As Integer
    Dim PriceDecimal As Decimal



End Structure

Private NumberProductsInteger As Integer = 37
Private InventoryProduct(NumberProductsInteger) As Product
Private TotalDueDecimal As Decimal 'total due for a customer

'Array to store the total sales for each product
Private ProductSalesTotalDecimal(NumberProductsInteger) As Decimal


Private Sub Load_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.lblTimeDate.Text = CStr(Date.Now)

    'Initialize values - InventoryProduct array
    InventoryProduct(0).ProductIDString = "102-1091"
    InventoryProduct(0).DescriptionString = "2x4-92 & Chr(96)  5/8  SPF  STUD"

    InventoryProduct(1).ProductIDString = "102-1127"
    InventoryProduct(1).DescriptionString = "2x4-12'  #2 &BTR  SPF  CONSTR  LUMB"

    InventoryProduct(2).ProductIDString = "102-1130"
    InventoryProduct(2).DescriptionString = "2x4-14'  #2&BTR  SPF  CONSTR LUMB"

    InventoryProduct(3).ProductIDString = "102-1143"
    InventoryProduct(3).DescriptionString = "2x4-16'  5/8  #2&BTR  SPF  CONSTR LUMB"

    InventoryProduct(4).ProductIDString = "102-1305"
    InventoryProduct(4).DescriptionString = "2x4-104  5/8  SPF  STUD"

    InventoryProduct(5).ProductIDString = "102-1758"
    InventoryProduct(5).DescriptionString = "2x6-8'  STD/#2&BTR  SPF  CONSTR LUMB"

    InventoryProduct(6).ProductIDString = "102-1774"
    InventoryProduct(6).DescriptionString = "2x6-12' #2&BTR  SPF  CONSTR LUMB"

    InventoryProduct(7).ProductIDString = "102-1923"
    InventoryProduct(7).DescriptionString = "2x8-16' #2&BTR  SPF  CONSTR LUMB"

    InventoryProduct(8).ProductIDString = "102-2184"
    InventoryProduct(8).DescriptionString = "2x12-16'  #2&BTR  SPF  CONSTR LUMB"

    InventoryProduct(9).ProductIDString = "106-1501"
    InventoryProduct(9).DescriptionString = "1-3/4x11-7/8  10'  LVL"

    InventoryProduct(10).ProductIDString = "106-2089"
    InventoryProduct(10).DescriptionString = "1-3/4x11-7/8  10'  LVL"

    InventoryProduct(11).ProductIDString = "106-2115"
    InventoryProduct(11).DescriptionString = "1-3/4x14  14'  LVL"

    InventoryProduct(12).ProductIDString = "106-2144"
    InventoryProduct(12).DescriptionString = "1-3/4x14  18'  LVL"

    InventoryProduct(13).ProductIDString = "106-2209"
    InventoryProduct(13).DescriptionString = "1-3/4x14  26'  20'  LVL"

    InventoryProduct(14).ProductIDString = "106-6742"
    InventoryProduct(14).DescriptionString = "2-1/2X14-18' I Joist  NI-60/PRi-60"

    InventoryProduct(15).ProductIDString = "106-6768"
    InventoryProduct(15).DescriptionString = "2-1/2X14-18' I Joist  NI-60/PRi-60"

    InventoryProduct(16).ProductIDString = "106-6807"
    InventoryProduct(16).DescriptionString = "2-1/2X14-24' I Joist  NI-60/PRi-60"

    InventoryProduct(17).ProductIDString = "106-8106"
    InventoryProduct(17).DescriptionString = "2-1/2X14-12' I Joist  RIM BOARD"

    InventoryProduct(18).ProductIDString = "111-0834"
    InventoryProduct(18).DescriptionString = "2x4-12'  AC2 TREATED  AG LIFETIME WTY"

    InventoryProduct(19).ProductIDString = "111-0847"
    InventoryProduct(19).DescriptionString = "2x4-14'  AC2 TREATED  AG LIFETIME WTY"

    InventoryProduct(20).ProductIDString = "124-2728"
    InventoryProduct(20).DescriptionString = "7/16  (14/32)-4 XB  OSB 3-WHITE STRIPES"

    InventoryProduct(21).ProductIDString = "124-2809"
    InventoryProduct(21).DescriptionString = "1/2  (16/32)-4 XB  OSB 2-WHITE BLAK  STRIPES"

    InventoryProduct(22).ProductIDString = "124-2867"
    InventoryProduct(22).DescriptionString = "3/4  (23/32)-4 XB  OSB T&G 5-WHITE STRIPES"

    InventoryProduct(23).ProductIDString = "131-1248"
    InventoryProduct(23).DescriptionString = "1/2x4'-12'  GYPsum  78LBL"

    InventoryProduct(24).ProductIDString = "131-1256"
    InventoryProduct(24).DescriptionString = "1/2x4'-8'  MOLD/MR  78LBL"

    InventoryProduct(25).ProductIDString = "131-1259"
    InventoryProduct(25).DescriptionString = "5/8x4'-8'  MOLD/MR TYPR X   105LBL"

    InventoryProduct(26).ProductIDString = "131-1303"
    InventoryProduct(26).DescriptionString = "5/8X4-12'  GYPS PC TYPE  X 105LBL"

    InventoryProduct(27).ProductIDString = "131-2454"
    InventoryProduct(27).DescriptionString = "8' METAL 1-1/4 CORNERBEAD"

    InventoryProduct(28).ProductIDString = "131-2726"
    InventoryProduct(28).DescriptionString = "ALL PURPOSE PALE-BLACK 7GAL"

    InventoryProduct(29).ProductIDString = "131-2849"
    InventoryProduct(29).DescriptionString = "EZ SAND  90  18#"

    InventoryProduct(30).ProductIDString = "131-2881"
    InventoryProduct(30).DescriptionString = "SPRAY-TEXTURE MEDIUM  40#"

    InventoryProduct(31).ProductIDString = "131-3097"
    InventoryProduct(31).DescriptionString = "PROROC JOINT TAPE  250'"

    InventoryProduct(32).ProductIDString = "165-0372"
    InventoryProduct(32).DescriptionString = "M/H208  ANJ COLUMN 3INCH DIAM -8'4"

    InventoryProduct(33).ProductIDString = "227-1442"
    InventoryProduct(33).DescriptionString = "NAIL 1-1/2 JOIST HANGER   5LB GALV"

    InventoryProduct(34).ProductIDString = "228-3142"
    InventoryProduct(34).DescriptionString = "JOIST HNGR  TM 2.5X14  THO54140"

    InventoryProduct(35).ProductIDString = "229-1202"
    InventoryProduct(35).DescriptionString = "NAIL 8D  V.C.  SINKERS   50LBL BOX"

    InventoryProduct(36).ProductIDString = "229-1244"
    InventoryProduct(36).DescriptionString = "NAIL 16D  V.C.  SINKERS   50LBL BOX"

    InventoryProduct(37).ProductIDString = "229-1303"
    InventoryProduct(37).DescriptionString = "NAIL 16D  GALVANZED BOX  50LBL BOX"

End Sub

Private Sub SearchBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearchProducts.Click

    'Search the ProductIDString property of the inventoryProduct
    'array to see if the value of ProductIDTextBox matches an ID 
    'in the array

    'Start variables to control the search
    Dim FoundBoolean As Boolean = False  'Control how long to search
    Dim RowInteger As Integer = 0        'Current row in the search

    'Loop to do the search
    Do Until FoundBoolean = True Or RowInteger > NumberProductsInteger

        'Compare textBox to array
        If txtProductID.Text = InventoryProduct(RowInteger).ProductIDString Then

            'found a match - display other data to the readonly textboxes
            cboProductIDLookup.SelectedItem = txtProductID.Text
            txtDescription.Text = InventoryProduct(RowInteger).DescriptionString
            txtQuantityAmount.Text = InventoryProduct(RowInteger).QuantityInteger.ToString
            txtPriceAmount.Text = InventoryProduct(RowInteger).PriceDecimal.ToString("C2")

            'change variable to indicate we have a match
            FoundBoolean = True
        Else
            'no match yet
            RowInteger += 1
        End If
    Loop

    'After the search determine if the ProductID was found

    If FoundBoolean = False Then  'no match was found
        'Clear the textbox controls that display product information
        'except for the ProductID textbox
        txtDescription.Clear()
        txtQuantityAmount.Clear()
        txtPriceAmount.Clear()
        cboProductIDLookup.SelectedIndex = -1

        'Display message that the ProductID is not valid
        MessageBox.Show("Reenter a valid product ID.", "Invalid Identifier", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        txtProductID.Focus()
        txtProductID.SelectAll()
    End If
End Sub

Private Sub PurchaseToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PurchaseToolStripMenuItem.Click



    'Test to determine if a product was found.
    If txtDescription.Text = String.Empty Then

        'Cannot purchase, product was not found
        MessageBox.Show("You must select a valid product before purchasing.", "Cannot Purchase", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        txtProductID.Focus()
        txtProductID.SelectAll()
    Else
        'Can purchase the product
        'Build a string to display in the listbox control

        Dim ProductString As String = txtProductID.Text.PadRight(12, " ") & "" & txtDescription.Text.PadRight(50, " ") & "" & txtQuantityAmount.Text.PadRight(7, " ") & "" & txtPriceAmount.Text.PadLeft(9, " ")
        lstPurchaseItems.Items.Add(ProductString)
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'Accumulate the total value of this customer order
        'and display it to the output textbox
        TotalDueDecimal += (txtPriceAmount.Text * txtQuantityAmount.Text)
        txtTotalDueAmount.Text = TotalDueDecimal.ToString("C2")
        'TotalDueTextBox.Text = QuantityTextBox.Text * TotalDueDecimal.ToString("C2")

        'Accumulate total sales by product to an array
        Dim IndexInteger As Integer = cboProductIDLookup.SelectedIndex
        ProductSalesTotalDecimal(IndexInteger) += (txtPriceAmount.Text * txtQuantityAmount.Text)

        'Here you can clear the form of product info if you think
        'that is a good way to do the processing
        cboProductIDLookup.SelectedIndex = -1
        txtProductID.Clear()
        txtDescription.Clear()
        txtPriceAmount.Clear()
        txtQuantityAmount.Clear()
        txtProductID.Focus()
    End If
End Sub

Private Sub ResetToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ResetToolStripMenuItem.Click
    'Clear all text box and combobox controls
    cboProductIDLookup.SelectedIndex = -1
    txtProductID.Clear()
    txtDescription.Clear()
    txtPriceAmount.Clear()
    txtQuantityAmount.Clear()
    txtTotalDueAmount.Clear()

    'Clear the list box control
    lstPurchaseItems.Items.Clear()

    'Reset the total due module-level variable to zero
    TotalDueDecimal = 0

    'Set the focus to the product ID text box
    txtProductID.Focus()
End Sub


Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
    Dim MessageString As String = "John Burton Version 1" & ControlChars.NewLine & "Today's date/time: " & Date.Now
    Dim TitleString As String = "About Version 1"

    MessageBox.Show(MessageString, TitleString, MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub

Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click

    'Close the form
    Me.Close()
End Sub

Private Sub ProductIDComboBox_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboProductIDLookup.SelectedIndexChanged


    'Test to determine if a product has been selected
    If cboProductIDLookup.SelectedIndex <> -1 Then

        'Store the selectedIndex to variable
        Dim RowInteger As Integer = cboProductIDLookup.SelectedIndex

        'Based on RowInteger, display values to TextBox controls
        'from the array named inventoryProduct
        txtProductID.Text = InventoryProduct(RowInteger).ProductIDString
        txtDescription.Text = InventoryProduct(RowInteger).DescriptionString
        txtQuantityAmount.Text = InventoryProduct(RowInteger).QuantityInteger.ToString("N0")
        txtPriceAmount.Text = InventoryProduct(RowInteger).PriceDecimal.ToString("C2")

    End If

    If Not IsNumeric(txtQuantityAmount.Text) Then
        MsgBox("Numeric input only!", vbCritical, "Invalid Input")
        txtQuantityAmount.Text = ""
    End If
End Sub

Private Sub TotalSalesByProductToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TotalSalesByProductToolStripMenuItem.Click
    'Display output to immediate window
    Dim RowInteger As Integer
    Dim SalesString As String = "ProductID" & vbTab & vbTab & "Amount" & vbCrLf
    For Each ProductItem As Product In InventoryProduct
        'Build string to display
        SalesString &= ProductItem.ProductIDString.PadLeft(8, " ") & vbTab & vbTab & ProductSalesTotalDecimal(RowInteger).ToString("C2").PadLeft(12, " ") & vbCrLf


        'Increment RowInteger
        RowInteger += 1
    Next
    SalesString &= "" & vbCrLf
    SalesString &= "Total Due" & vbTab & vbTab & txtTotalDueAmount.Text & vbCrLf


    Dim Answer As String
    Dim MyNote As String

    MyNote = MessageBox.Show(SalesString, "Sales Totals, Do you want to save this File", MessageBoxButtons.OK, MessageBoxIcon.Information)
    MyNote = "Do you want to save the Sales Totals Summary to File?"
    Answer = MsgBox(MyNote, vbYesNo, "Sales Totals to File")

    If Answer = vbNo Then
        'Code for No Responce
    End If

    If Answer = vbYes Then
        'Code for Yes Responce
        sFile.InitialDirectory = ("C:\")
        sFile.FileName = ("Save As...")
        sFile.Filter = ("Only Text Files (*.txt)|*.txt")
        sFile.ShowDialog()

        Dim W As New IO.StreamWriter(sFile.FileName, True)  ' notes from class need messgbox
        W.WriteLine(lblTimeDate.Text & vbCrLf & vbCrLf & txtJobFileName.Text)
        W.WriteLine()
        W.WriteLine()

        W.WriteLine(SalesString)
        W.Close()
    End If
End Sub


Private Sub SearchToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchToolStripMenuItem.Click
    'Call the Click event for theSearch button control
    btnSearchProducts.PerformClick()
End Sub


Private Sub SaveAsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SaveAsToolStripMenuItem.Click
    sFile.InitialDirectory = ("C:\")
    sFile.FileName = ("Save As...")
    sFile.Filter = ("Only Text Files (*.txt)|*.txt")
    sFile.ShowDialog()

    Dim W As New IO.StreamWriter(sFile.FileName, True)  ' notes from class need messgbox
    W.WriteLine(lblTimeDate.Text & "             " & txtJobFileName.Text)
    W.WriteLine()
    W.WriteLine()

    Dim ProductString As String = lblSkuNumper.Text.PadRight(12, " ") & "" & lblDescription.Text.PadLeft(27, " ") & "" & lblQuantityAmount.Text.PadLeft(28, " ") & "" & lblPriceAmount.Text.PadLeft(11, " ")
    W.WriteLine(ProductString)
    W.WriteLine()

    Dim i As Integer
    For i = 0 To lstPurchaseItems.Items.Count - 1
        W.WriteLine(lstPurchaseItems.Items.Item(i))

    Next
    W.WriteLine()
    W.WriteLine()
    Dim TotalDue As String = txtTotalDueAmount.Text.PadLeft(70, ".")
    W.WriteLine(vbTab & vbTab & vbTab & vbTab & vbTab & vbTab & "TotalDue" & txtTotalDueAmount.Text.PadLeft(22, ""))
    W.Close()
End Sub


Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExitDesign.Click
    Me.Close()
End Sub

Private Sub btnResetClearItems_Click(sender As Object, e As EventArgs) Handles btnResetClearItems.Click
    ResetToolStripMenuItem.PerformClick()
End Sub

Private Sub txtQuantityAmount_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtQuantityAmount.KeyPress
    If (e.KeyChar < "0" OrElse e.KeyChar > "9") AndAlso
        e.KeyChar <> ControlChars.Back Then
        e.Handled = True
    End If
    ' use this to add any special characters..............e.KeyChar <> "." AndAlso
End Sub


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnSearchDescription.Click
    'Search the ProductIDString property of the inventoryProduct
    'array to see if the value of ProductIDTextBox matches an ID 
    'in the array

    'Start variables to control the search
    Dim FoundBoolean As Boolean = False  'Control how long to search
    Dim RowInteger As Integer = 0        'Current row in the search

    'Loop to do the search
    Do Until FoundBoolean = True Or RowInteger > NumberProductsInteger

        'Compare textBox to array
        If txtDescription.Text = InventoryProduct(RowInteger).DescriptionString Then 'If txtProductID.Text = InventoryProduct(RowInteger).ProductIDString Then


            'found a match - display other data to the readonly textboxes
            txtProductID.Text = InventoryProduct(RowInteger).ProductIDString
            cboProductIDLookup.SelectedItem = txtProductID.Text
            txtDescription.Text = InventoryProduct(RowInteger).DescriptionString
            txtQuantityAmount.Text = InventoryProduct(RowInteger).QuantityInteger.ToString
            txtPriceAmount.Text = InventoryProduct(RowInteger).PriceDecimal.ToString("C2")

            'change variable to indicate we have a match
            FoundBoolean = True
        Else
            'no match yet
            RowInteger += 1
        End If
    Loop

    'After the search determine if the ProductID was found

    If FoundBoolean = False Then  'no match was found
        'Clear the textbox controls that display product information
        'except for the ProductID textbox
        txtDescription.Clear()
        txtQuantityAmount.Clear()
        txtPriceAmount.Clear()
        cboProductIDLookup.SelectedIndex = -1

        'Display message that the ProductID is not valid
        MessageBox.Show("Reenter a valid product ID.", "Invalid Identifier", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        txtProductID.Focus()
        txtProductID.SelectAll()
    End If

End Sub

Private Sub txtPriceAmount_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtPriceAmount.KeyDown
    If (e.KeyCode >= Keys.D0 And e.KeyCode <= Keys.D9) OrElse (e.KeyCode >= Keys.NumPad0 And e.KeyCode <= Keys.NumPad9) OrElse e.KeyCode = Keys.Back Then
        acceptableKey = True
    Else
        acceptableKey = False
    End If

End Sub

Private Sub txtPriceAmount_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtPriceAmount.KeyPress


    ' Check for the flag being set in the KeyDown event.
    If acceptableKey = False Then
        ' Stop the character from being entered into the control since it is non-numerical.
        e.Handled = True
        Return
    Else
        'must be in first position


        If e.KeyChar = Convert.ToChar(Keys.Back) Then
            If strCurrency.Length > 0 Then
                strCurrency = strCurrency.Substring(0, strCurrency.Length - 1)
            End If
        Else
            strCurrency = strCurrency & e.KeyChar
        End If

        If strCurrency.Length = 0 Then
            txtPriceAmount.Text = ""
        ElseIf strCurrency.Length = 1 Then
            txtPriceAmount.Text = "0.0" & strCurrency
        ElseIf strCurrency.Length = 2 Then
            txtPriceAmount.Text = "0." & strCurrency
        ElseIf strCurrency.Length > 2 Then
            txtPriceAmount.Text = strCurrency.Substring(0, strCurrency.Length - 2) & "." & strCurrency.Substring(strCurrency.Length - 2)
        End If
        txtPriceAmount.Select(txtPriceAmount.Text.Length, 0)

    End If
    e.Handled = True
End Sub



Private Sub btnPurchaseItems_Click(sender As Object, e As EventArgs) Handles btnPurchaseItems.Click
    PurchaseToolStripMenuItem.PerformClick()
End Sub

结束类

4

5 回答 5

5

有几种方法可以解决您的问题,但首先您需要在表单中添加一个MaskedTextBox控件。

完成此操作后,您可以将控件的“掩码”属性(在 F4 属性中)设置为您希望的任何内容,“$00.00”。或者,您可以通过执行以下操作将其绑定到按钮单击等事件:

private void someButton_Click(object sender, EventArgs e)
{
   maskedTextBox1.Mask = "$00.00";
}

无论哪种情况,这都应该为您提供您希望的结果。

于 2013-10-11T18:45:30.733 回答
2

Code (programs) are supposed to make life easier for users, not harder. If you force a $ into the textbox, it is only a valid approach for a US user. Second, it converts a valid entry from numeric (numerals) to text and requires another step if it needs to be saved to a database or used in calculations.

If the real issue is printing a $ all you need is:

 decVar.ToString("C2")

For a visual cue for the user, either a label or the masked edit control. It is BAD PRACTICE to force the user to do your work. Formatting the data for display in the appropriate format is your job, not that of the user, even if it is just one keypress.

Another solution, one that might be up your alley, is to swap out the display. In textBox_Leave:

   textAmount.Text = decVar.ToString("C2")

In textbox_enter:

    textAmount.Text = decVar.ToString

So when they are NOT editting the textbox it has the $ and will print on the packing slip or whatever. I should note that if you are printing from your variables that decVar.ToString("C2") is more flexible than printing textAmount.Text because your way requires the order form or whatever to still be around!

于 2013-10-11T19:20:39.567 回答
1

您可以尝试使用 RichTextBox 控件:

RichTextBox1.Text = "$"
RichTextBox1.SelectAll()
RichTextBox1.SelectionProtected = True

尽管更简单的解决方案可能只是在 TextBox 前面放置一个带有美元符号的标签,或者正如其他人所提到的,但 MaskedTextBox 控件就是为这种情况设计的。

于 2013-10-11T19:04:51.373 回答
1

查看 MaskedTextBox 控件。你应该可以使用像$00.00.

http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx

于 2013-10-11T18:39:22.093 回答
1

尝试这个

 <wpf:TextBox Text="{Binding YourPropertie, StringFormat='$\{0:\}' }" />

我希望它有效:D

于 2013-10-11T18:39:54.410 回答