入力可能な文字バイト数を設定する
スポンサーリンク
既存の 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;
関連するリファレンス
準備中です。