這是一件簡單的事情,我一直試圖弄清楚一段時間,它開始惱火。我想要的只是按下按鈕時,只允許某些值出現在文本框中。這是什麼意思是例如只允許「abc123!」在文本框中,如果說如「w」的值,則清除文本框。Visual Basic幫助 - 在可視基本文本框中防止輸入某些字符的文本限制
我嘗試了諸如'如果不是正則表達式。匹配'但它只是導致我的錯誤。
請幫忙;)
這是一件簡單的事情,我一直試圖弄清楚一段時間,它開始惱火。我想要的只是按下按鈕時,只允許某些值出現在文本框中。這是什麼意思是例如只允許「abc123!」在文本框中,如果說如「w」的值,則清除文本框。Visual Basic幫助 - 在可視基本文本框中防止輸入某些字符的文本限制
我嘗試了諸如'如果不是正則表達式。匹配'但它只是導致我的錯誤。
請幫忙;)
你會想要使用白名單。您允許的字符將比現有其他字符小得多。你可以通過幾種方式來做到這一點。你可以在文本框中處理按鍵事件,如果這個值是什麼,那麼你執行你的代碼。另一種方式可以做到這一點(如果它是一個winforms應用程序)將從文本框繼承並將您的代碼(那麼您可以重新使用此控件)。這裏是一個文本框,只允許數字輸入的例子:
''' <summary>
''' Text box that only accepts numeric values.
''' </summary>
''' <remarks></remarks>
Public Class NumericTextBox
Inherits TextBox
Private Const ES_NUMBER As Integer = &H2000
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim params As CreateParams = MyBase.CreateParams
params.Style = params.Style Or ES_NUMBER
Return params
End Get
End Property
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
'Prevent pasting of non-numeric characters
If keyData = (Keys.Shift Or Keys.Insert) OrElse keyData = (Keys.Control Or Keys.V) Then
Dim data As IDataObject = Clipboard.GetDataObject
If data Is Nothing Then
Return MyBase.ProcessCmdKey(msg, keyData)
Else
Dim text As String = CStr(data.GetData(DataFormats.StringFormat, True))
If text = String.Empty Then
Return MyBase.ProcessCmdKey(msg, keyData)
Else
For Each ch As Char In text.ToCharArray
If Not Char.IsNumber(ch) Then
Return True
End If
Next
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End If
ElseIf keyData = (Keys.Control Or Keys.A) Then
' Process the select all
Me.SelectAll()
Else
Return MyBase.ProcessCmdKey(msg, keyData)
End If
End Function
End Class
如果你只是想用一個文本框和按鍵事件,你可以做這樣的事情。我只有兩個字在我的白名單,你會想包括所有的字符,你會想包括:
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
' Test white list, this is only 0 and 1 which are ASCII 48 and 49
Dim allowedChars() As String = {Chr(48), Chr(49)}
If allowedChars.Contains(e.KeyChar) Then
' Setting handled to true stops the character from being entered, remove this or execute your code
' here that you want
e.Handled = True
End If
End Sub
如果你想炭代碼的列表,你可以讓他們在這裏:
希望這會有所幫助。 ;-)
非常感謝:D –
非常歡迎。 –
我其實需要所有的字符a-z A-z 0-9和所有的符號來工作,我想阻止諸如文或任何其他語言的字符。 –
您需要在關鍵事件上編寫代碼並驗證按下的鍵是否是有效的鍵。基本上你需要加強所有事件的數據輸入或粘貼到您的文本框 –