C#入力可能な文字バイト数を設定する

スポンサーリンク

既存の System.Windows.Forms.TextBox コントロール (TextBoxBase から継承したコントロール) には、入力可能文字数を制限する、MaxLength プロパティがあります。

業務アプリケーションでは、TextBox への入力をバイト数で (というよりは、半角を 1 バイト、全角を 2 バイトでカウントして) で制限したい場合があります。そのような時、MaxLength プロパティと同様に、デザイナから簡単に設定できると開発が容易になるでしょう。

この機能を実現するには、System.Windows.Forms.TextBox クラスから継承した、新しい TextBox コントロールを作成します。ここで、WM_CHAR (クライアント領域への入力) と WM_PASTE (貼り付け) を捕捉し、然るべき処理を行えば良いのです。WM_CHAR と WM_PASTE を捕捉するために、WndProc メソッドをオーバーライドしています。

然るべき処理は、WndProc メソッドで実装せず、わかりやすくするために、OnChar メソッドと OnPaste メソッドを経ています。ここで、Shift_JIS へエンコードした状態でバイト数を調べ、然るべき制限をしています。

カスタム コントロール自体は、MaxByteLengtcTextBox クラス を参考にしてください。

サンプルコード

以下にサンプルコードを示します。

C# 全般
    // 5 バイトまで入力可能にする
    this.maxByteLengtcTextBox1.MaxByteLength = 5;

関連するリファレンス

準備中です。

スポンサーリンク