重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
遍历每一个字符,看是全角还是半角的。半角的字符总数 +1,全角的字符总数 +2。
成都创新互联专注于企业全网营销推广、网站重做改版、进贤网站定制设计、自适应品牌网站建设、H5网站设计、成都商城网站开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为进贤等各大城市提供网站开发制作服务。
参考:
Public Function GetByteLength(ByVal value As String) As Long
Dim i As Long = 0
For Each c As Char In value
If (c.ToString().Length = System.Text.Encoding.Default.GetByteCount(value.ToString())) Then
i = i + 1
End If
i = i + 1
Next
Return i
End Function
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
If System.Text.Encoding.Default.GetByteCount(TextBox1.Text) = 11 And e.KeyChar Chr(8) Then
e.Handled = True
Else
e.Handled = False
End If
End Sub
这个不太完善,是假设原来文本长度已经有11就不允许继续输入,因为判断当下输入的是汉字还是英文很麻烦。
e.KeyChar Chr(8)这句是保证任何时候Backspace键都要有效。
希望能对你有所帮助。
上面思路是正确的, 用ascw 函数也可以
private function LenC( ps as string ) as Integer
Dim n As Integer
Dim StrLen As Integer
For n = 1 To Len(Text1.Text)
If Ascw(Mid(Text1.Text, n, 1)) 256 Then
StrLen = StrLen + 2
Else
StrLen = StrLen + 1
Next n
return strLen
end function