|
分類:[VB.NET/VB2005 以降]
テキストボックスでバイト数での制限をかけたいのですが、
txtbox_KeyPressでバイト数を超えた場合(16バイト)に、e.Handled = Trueにしているのですが、
全角の入力の場合に、追加で2バイト分入力されてしまいます。
どのように対応すべきなのでしょうか?
Private Sub txtbox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtbox.KeyPress
Dim SJIS As System.Text.Encoding
SJIS = System.Text.Encoding.GetEncoding("Shift_JIS")
If SJIS.GetByteCount(txtbox.Text) > 16 _
AndAlso e.KeyChar <> Chr(Keys.Back) Then
txtbox.Text = SJIS.GetChars(SJIS.GetBytes(txtbox.Text), 0, 16)
txtbox.SelectionStart = Len(txtbox.Text)
e.Handled = True
End If
End Sub
|