遍歷每一個字符,看是全角還是半角的。半角的字符總數(shù) +1,全角的字符總數(shù) +2。
創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、澠池網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為澠池等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
參考:
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
這個不太完善,是假設(shè)原來文本長度已經(jīng)有11就不允許繼續(xù)輸入,因為判斷當(dāng)下輸入的是漢字還是英文很麻煩。
e.KeyChar Chr(8)這句是保證任何時候Backspace鍵都要有效。
希望能對你有所幫助。
上面思路是正確的, 用ascw 函數(shù)也可以
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