2010-01-27 46 views
1

我的表單中有一系列文本框,並且我的客戶希望我篩選出不允許的字符,例如name字段中不能包含符號或數字。篩選可以添加到文本框中的字符

現在,他希望如此,當你試着放入一個特殊的字符時,它不會被輸入到文本框中。我知道這件事的後勤,但我不知道如何去編碼它。

基本上需要發生的是,當用戶輸入像$, ^, 5, *等字符時,函數需要識別它並阻止它們進入文本框,這意味着一旦它們進入或中斷行動。

有人對此有所瞭解嗎?任何感謝,謝謝。

回答

0

你可以使用正則表達式:

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged 
    StripNonAlphabetCharacters(TextBox1) 
End Sub 

Public Sub StripNonAlphabetCharacters(ByVal input As TextBox) 
    ' pattern matches any character that is NOT A-Z (allows upper and lower case alphabets) 
    Dim rx As New Regex("[^a-zA-Z]") 
    If (rx.IsMatch(input.Text)) Then 
     Dim startPosition As Integer = input.SelectionStart - 1 
     input.Text = rx.Replace(input.Text, "") 
     input.SelectionStart = startPosition 
    End If 
End Sub 

實際Regex應該要做出的形式中的一員,因此每次不聲明或放入一些常見的類以供參考。選擇邏輯用於在剝離無效字符後將光標保持在其當前位置。


有關的WinForms,你可以使用MaskedTextBox Class並設置Mask property

對於ASP.NET,您可以使用AJAX工具包的MaskedEdit control

+0

嗨,謝謝你的回答。雖然這種解決方案可行,但這實際上是爲了一個大學項目(客戶是我的大學),他們希望看到某種功能來處理這個問題,而不是所有的問題都可以通過預先制定的控制來處理。但感謝您的貢獻,它會派上用場:) – Matt 2010-01-27 23:13:12

+0

@Matt我更新了WinForms場景的響應。你可以編寫一個類似的函數來接受一個字符串,而不是一個文本框控件,並在需要的時候返回剝離的結果。 – 2010-01-27 23:52:19

相關問題