2011-05-31 67 views
0

我有一個文本框的KeyPress事件下面的代碼howver需要,現在進來的意思我要做myTextbox.Text =「A,輸入字符串」使用KeyPress事件邏輯Textbox.Text分配

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

     Dim tb As TextBox = sender 

     If (e.KeyChar = "." AndAlso tb.Text.Length = 0) Then 
      e.Handled = True 
     End If 

     If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "." And tb.Text.IndexOf(".") < 0)) Then 
      e.Handled = True 
     End If 

     If (tb.SelectionStart > tb.Text.Length - 2 And tb.Text.IndexOf(".") >= 0 And tb.Text.IndexOf(".") + 3 = tb.Text.Length) Then 
      e.Handled = True 
     End If 



     If (tb.Text.IndexOf(".") < 0 And tb.Text.Length >= 4 And e.KeyChar <> ".") Then 
      e.Handled = True 
     End If 

     If (tb.Text.IndexOf(".") >= 0 And tb.Text.Length >= 7) Then 
      e.Handled = True 
     End If 


     If (e.KeyChar = ControlChars.Back) Then 
      e.Handled = False 
     End If 


    End Sub 

此輸入字符串可能包含我不想要的格式,而按鍵事件可以滿足用戶輸入時的需要,我需要在文本分配的情況下處理它。

我以爲在分配文本屬性後觸發按鍵事件,但我不認爲這會提供我想要的。

感謝

回答

0

你需要做的就是重構這個代碼放到一個方法,然後調用該方法從相關事件。

0

如果您需要單獨檢查每個鍵,因爲它是鍵入的,並且也是一次分配的字符串,所以最好使用兩個函數來添加一個函數來檢查字符串的有效性。

我通常更喜歡使用Leave事件來一次檢查字符串,因爲用戶在檢查之前輸入整個字符串可能更自然。如果您這樣做,您可以從Leave事件處理函數和分配文本之前調用相同的有效性檢查函數。