C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 58 を表示中)
■32926 / )  テキストボックスのバイト数制限
□投稿者/ マジョラム (17回)-(2009/02/17(Tue) 20:32:42)

分類:[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

返信 編集キー/


管理者用

- Child Tree -