2014-12-27 77 views
0

我想在用戶添加任何數字時總是在文本框中添加$符號,我的代碼看起來像這樣,但它不起作用VB.NET:如何總是在文本框中預先設置美元符號值

Private Sub capitalTB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles capitalTB.TextChanged 
    Dim cleanTXT As String 
    If capitalTB.Text.StartsWith("$") = False Then 
     cleanTXT = "$" & capitalTB.Text 
     capitalTB.Text = cleanTXT 
    End If 
End Sub 

當我科印第2個數字就變成這樣的: enter image description here

任何幫助將是巨大的。

+1

不要手動做。當您發佈貨幣值時使用ToString:'someTB.Text = someAmount.ToString(「C2」)'它將顯示當前文化的正確貨幣符號。除此之外,「它不工作」並不描述我們可以解決的問題 – Plutonix 2014-12-27 13:59:24

+0

已更新問題 – Teddybugs 2014-12-27 14:00:12

+1

您可以使用['貨幣掩碼 - 文本框]](http://www.codeproject.com/Articles/248989/A -Currency-Masked-TextBox-from-TextBox-Class)根據需要使用$符號。 – Avijit 2014-12-27 14:18:14

回答

2
Private Sub capitalTB_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles capitalTB.TextChanged 
    If capitalTB.Text.StartsWith("$") = False Then 
     Dim SelStart As Integer 

     SelStart = capitalTB.SelectionStart 
     capitalTB.Text = "$" & capitalTB.Text 
     capitalTB.SelectionStart = SelStart + 1 
    End If 
End Sub 

嘗試上面的代碼,併爲你的學習:你缺什麼,當你重新設置文本框的它把你的光標開始的文本框(這是您插入$之前逸岸)文本光標位置。我首先在變量中存儲光標位置,然後將其分配迴文本框增加1,因爲現在還有另一個字母$。

0
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles capitalTB.TextChanged 
    Dim cleanTXT As String 
    If capitalTB.Text.StartsWith("$") = False Then 
     cleanTXT = "$" & Replace(capitalTB.Text, "$", "") 
     capitalTB.Text = cleanTXT 
    End If 
End Sub 
+0

它適用於一位數字,但是當我輸入123時,它變成了$ 321 – Teddybugs 2014-12-27 14:04:35

+0

@David你不能自己調試它!嚴重的最簡單的問題!如果你想學習編程,這是自己解決這個問題的第一步。 – 2014-12-27 14:05:46

+0

即時通訊完全新的VB.net – Teddybugs 2014-12-27 14:06:21

0

回答我自己的問題,與此

Private Sub capitalTB_Validating(ByVal sender As Object, _ 
            ByVal e As System.ComponentModel.CancelEventArgs) Handles capitalTB.Validating 
     Dim currency As Decimal 

     'Convert the current value to currency, with or without a currency symbol. 
     If Not Decimal.TryParse(Me.capitalTB.Text, _ 
           Globalization.NumberStyles.Currency, _ 
           Nothing, _ 
           currency) Then 
      'Don't let the user leave the field if the value is invalid. 
      With Me.capitalTB 
       .HideSelection = False 
       .SelectAll() 

       MessageBox.Show("Please enter a valid capital amount.", _ 
           "Invalid Capital", _ 
           MessageBoxButtons.OK, _ 
           MessageBoxIcon.Error) 

       .HideSelection = True 
      End With 

      e.Cancel = True 
     End If 
    End Sub 

    Private Sub capitalTB_Validated(ByVal sender As Object, _ 
            ByVal e As System.EventArgs) Handles capitalTB.Validated 
     'Display the value as local currency. 
     Me.capitalTB.Text = Decimal.Parse(Me.capitalTB.Text).ToString("c") 
    End Sub 

由於解決了@Avijit貨幣屏蔽。