- - PR -
TextBox コントロールの入力文字数をバイト数で制限
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-03-25 20:23
件名の通り、TextBox コントロールの入力文字数をバイト数で制限する
方法がわからなくて困っております。 TextBox の MaxLength では、バイト数ではなく、あくまでも文字数での制限と なってしまうのですが、これをバイト数で入力可能な文字数を制限したいと 思っています。 何かよい方法はないでしょうか? よろしくお願いします。 | ||||
|
投稿日時: 2004-03-25 20:24
速攻ですみません。環境を書き忘れました。
開発言語は C# です。(Visual Studio .NET 2003 を使用しています。) それではよろしくお願い致します。 | ||||
|
投稿日時: 2004-03-25 20:29
Webアプリですか?Windowsアプリですか?
#追記 .NETはUNICODEなのでバイト単位ではなく文字数で判断しています。 なので、イベントでチェックさせるしかないようです。 「C#.NET バイト 入力 制限 テキストボックス」で検索してみました。 参考になれば幸いです。 http://groups.yahoo.co.jp/group/dotnet-csharp/message/357 _________________ まゆりん@絶賛勉強中<基本情報処理 [ メッセージ編集済み 編集者: まゆりん 編集日時 2004-03-25 21:01 ] | ||||
|
投稿日時: 2004-03-25 21:51
C#かどうかよりも、TextBoxというのがどっちのTextBoxなのか知りたいですね。2つありますから。
(話からSystem.Windows.Forms.TextBoxだと推察はできますが) あと、まゆりんさんのリンク先にも書いてありますが、バイト数で制限したいならその半分の値をMaxLengthに設定すれば良いです。UTF-16なら。 おそらくShift-JISで何バイトなのかということをおっしゃりたいのだと思いますが、Shift-JISは、今日ではもはやWindows環境で「特に断らなければこれに決まってる」と言えるようなものではありません。 全角半角などという概念も、もはや古臭いものです。 確かに現在でも意識しなければならない時は多いですが、過去の概念だという意識を持ちながら接してみてください。 ある条件で入力された文字を消すサンプルです。 長い文字列をコピペされても使えます。(多分)
バイト数についてはEncodingクラスの静的メソッドGetEncoding()で Encoding.GetEncoding("shift-jis") などとやるとEncodingオブジェクトが取得できますのでGetByteCount()とかでバイト数がとれるんじゃないでしょうか。 それを使った判定を「長さの判定」の部分に入れてください。 | ||||
|
投稿日時: 2004-03-25 22:07
お返事ありがとうございます。 TextBox は System.Windows.Forms.TextBox です。
すみません。 で、なぜ、バイト数で制限したいか、をお話したほうがより適切なアドバイスを 頂けそうなので、お付き合いくださると幸せです。 今回行ないたい事は、 TextBox に入力された値を、SQL Server に Insert するのですが、 その SQL Server 側のフィールドが varchar(20) のようになっています。 SQL Server の varchar(20) の 20 は、20文字ではなく、20バイトになるので それに合わせる為に C# で作成している Windows Forms アプリケーションの TextBox に入力できる文字数を、文字の数ではなく、バイト数で行ないたかった 為です。TextBox に入力できた値は問題なく SQL Server に登録できるんだよ、 という事にしたいのです。 逆に SQL Server 側の varchar の定義が 20 バイトではなく、20文字 とできるのであれば、それでも構わないのですが。。。 アドバイス頂いたコードはこれから試してみます。ありがとうございます。 他にもアドバイスなどあれば、どんな事でも構わないので、 教えて頂けると助かります。 よろしくお願いします。 | ||||
|
投稿日時: 2004-03-25 23:44
nvarcharにする…てまあ、そういう問題じゃないですよね… |
1