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

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

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

Re[3]: 文字数制限


(過去ログ 132 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■78090 / inTopicNo.1)  文字数制限
  
□投稿者/ みさきZ (1回)-(2015/12/14(Mon) 13:40:03)

分類:[C#] 

C#でテキストボックスに文字数制限をしたいのですが

textBox5.MaxLength = 8;

このようにしているのですが、これだと「ひらがな」に対して効きません。
どうしたらよいのでしょうか...。
引用返信 編集キー/
■78091 / inTopicNo.2)  Re[1]: 文字数制限
□投稿者/ WebSurfer (736回)-(2015/12/14(Mon) 13:49:02)
No78090 (みさきZ さん) に返信
> C#でテキストボックスに文字数制限をしたいのですが

何を作っているのかと自分の環境を書けませんか?

TextBox と言っても Windows Forms, ASP.NET, WPF で使うものがあるのですよ。
引用返信 編集キー/
■78092 / inTopicNo.3)  Re[2]: 文字数制限
□投稿者/ みさきZ (2回)-(2015/12/14(Mon) 13:59:14)
No78091 (WebSurfer さん) に返信
> ■No78090 (みさきZ さん) に返信
>>C#でテキストボックスに文字数制限をしたいのですが
>
> 何を作っているのかと自分の環境を書けませんか?
>
> TextBox と言っても Windows Forms, ASP.NET, WPF で使うものがあるのですよ。

説明不足で済みません
捕捉します

TextBoxは Windows Formsで使っています。
引用返信 編集キー/
■78093 / inTopicNo.4)  Re[1]: 文字数制限
□投稿者/ shu (791回)-(2015/12/14(Mon) 14:04:44)
No78090 (みさきZ さん) に返信
> C#でテキストボックスに文字数制限をしたいのですが
>
> textBox5.MaxLength = 8;
>
> このようにしているのですが、これだと「ひらがな」に対して効きません。
> どうしたらよいのでしょうか...。
MaxLengthは文字数制限なので8を指定すると8文字まで入力が可能となります。
「ひらがな」は4文字なので制限内の入力扱いになります。Shift-JISでの
Byte数制限の事だとしても1文字2Byteなので8Byteとなり制限内の扱いとなります。
「ひらがな」が8文字の制限に引っかかるのはなぜでしょうか?

引用返信 編集キー/
■78094 / inTopicNo.5)  Re[2]: 文字数制限
□投稿者/ みさきZ (3回)-(2015/12/14(Mon) 14:12:19)
No78093 (shu さん) に返信
> ■No78090 (みさきZ さん) に返信
>>C#でテキストボックスに文字数制限をしたいのですが
>>
>> textBox5.MaxLength = 8;
>>
>>このようにしているのですが、これだと「ひらがな」に対して効きません。
>>どうしたらよいのでしょうか...。
> MaxLengthは文字数制限なので8を指定すると8文字まで入力が可能となります。
> 「ひらがな」は4文字なので制限内の入力扱いになります。Shift-JISでの
> Byte数制限の事だとしても1文字2Byteなので8Byteとなり制限内の扱いとなります。
> 「ひらがな」が8文字の制限に引っかかるのはなぜでしょうか?
>
すみません「ひらがな」というのは入力方法です
引用返信 編集キー/
■78095 / inTopicNo.6)  Re[3]: 文字数制限
□投稿者/ 774RR (351回)-(2015/12/14(Mon) 14:15:01)
ちょろっと試験プログラムを組んでみた。
Visual Studio 2005 C# .NET Framework 2.0 のフォームアプリを新規作成
デザイナ画面のプロパティ設定で textBox1 のプロパティ MaxLengh に8を設定してみる。

「あいうえおあいう」は格納できて、それ以上の追記ができない状況になった。
これは仕様としてOKと判断する。

.NET の世界では「文字」の内部表記は UTF-16 なので
「あ」も1文字
「い」も1文字
「0」も1文字
だからこれは仕様どおり

MaxLength で指定するのは shift-jis (CP932) のバイト数ではない。

# ってもろかぶりか・・・
引用返信 編集キー/
■78096 / inTopicNo.7)  Re[4]: 文字数制限
□投稿者/ みさきZ (4回)-(2015/12/14(Mon) 14:23:35)
No78095 (774RR さん) に返信
> ちょろっと試験プログラムを組んでみた。
> Visual Studio 2005 C# .NET Framework 2.0 のフォームアプリを新規作成
> デザイナ画面のプロパティ設定で textBox1 のプロパティ MaxLengh に8を設定してみる。
>
> 「あいうえおあいう」は格納できて、それ以上の追記ができない状況になった。
> これは仕様としてOKと判断する。
>
> .NET の世界では「文字」の内部表記は UTF-16 なので
> 「あ」も1文字
> 「い」も1文字
> 「0」も1文字
> だからこれは仕様どおり
>
> MaxLength で指定するのは shift-jis (CP932) のバイト数ではない。
>
> # ってもろかぶりか・・・



みなさん相談に乗ってくださりありがとうございました。
なんとか解決することができました...。
ありがとうございました。

解決済み
引用返信 編集キー/
■78097 / inTopicNo.8)  Re[3]: 文字数制限
□投稿者/ WebSurfer (737回)-(2015/12/14(Mon) 14:24:15)
No78092 (みさきZ さん) に返信

> TextBoxは Windows Formsで使っています。

ならば、MaxLength プロパティを 8 に設定すれば「ひらがな」であろうと ASCII 文字であ
ろうと、直接入力してもコピペしても、8 文字に制限されますが? 「効きません」とは
具体的にどういうことを言ってますか?


#サロゲートペアは 2 文字としてカウントされるらしく、例えば "あ&#131083;123あ&#13314;あ456" とい
う文字列を TextBox にコピペすると(" は除いて)、'&#131083;' はサロゲートペアなので見かけ
7 文字でカットされるということはありますが。
引用返信 編集キー/
■78098 / inTopicNo.9)  Re[5]: 文字数制限
□投稿者/ WebSurfer (738回)-(2015/12/14(Mon) 14:29:42)
No78096 (みさきZ さん) に返信

> なんとか解決することができました...。

「解決済み」マークを付けるなら、具体的にどのように解決したか(その前に質問者さんの
問題は何だったのか明確にしてもらった方がよさそうですが)を書いてからにしていただけ
ませんか。

このような掲示板は、質問者さんの個人的問題解決の場ではなくて、情報共有の場と考えて
いただければと思います。
引用返信 編集キー/
■78100 / inTopicNo.10)  Re[1]: 文字数制限
□投稿者/ 魔界の仮面弁士 (603回)-(2015/12/14(Mon) 14:48:37)
No78090 (みさきZ さん) に返信
> これだと「ひらがな」に対して効きません。

Unicode 前提となるため、ひらがな = 2 バイトという考え方は通用しません。


「あ」の文字は、Shift_JIS = 2 バイト / UTF-16 = 2 バイト / UTF-8 = 3 バイト
「α」の文字は、Shift_JIS = 2 バイト / UTF-16 = 2 バイト / UTF-8 = 2 バイト
半角カナの場合、Shift_JIS = 1 バイト / UTF-16 = 2 バイト / UTF-8 = 3 バイト

このほか、Shift_JIS = 該当文字なし / UTF-16 = 4 バイト / UTF-8 = 4 バイト
となるような文字もあります。(“吉野家”の「つちヨシ」など)


かといって、文字幅で換算するというわけにもいきませんしね。
(ゼロ幅文字、合成文字、タブ文字などの対応が微妙になるので…)


もし、「Shift_JIS データの入力欄」として使用するのが目的なら、
Shift_JIS 非該当の文字入力が行われないような制限も必要ですね。



> C#でテキストボックスに文字数制限をしたいのですが
> textBox5.MaxLength = 8;

今ご覧になられている掲示板の上部リンク(左から2番目)から
C# と VB.NET の入門サイトのサンプルページに移動した後、

 [サンプル]
  +[Visual C# .NET]
   +[テキストボックス]
    +[入力可能な文字バイト数を設定する]

を利用してみるというのは如何でしょうか。
引用返信 編集キー/
■78101 / inTopicNo.11)  Re[2]: 文字数制限
□投稿者/ SVO (2回)-(2015/12/14(Mon) 14:54:01)
No78100 (魔界の仮面弁士 さん) に返信
> ■No78090 (みさきZ さん) に返信
>>これだと「ひらがな」に対して効きません。
>
> Unicode 前提となるため、ひらがな = 2 バイトという考え方は通用しません。
>
>
> 「あ」の文字は、Shift_JIS = 2 バイト / UTF-16 = 2 バイト / UTF-8 = 3 バイト
> 「α」の文字は、Shift_JIS = 2 バイト / UTF-16 = 2 バイト / UTF-8 = 2 バイト
> 半角カナの場合、Shift_JIS = 1 バイト / UTF-16 = 2 バイト / UTF-8 = 3 バイト
>
> このほか、Shift_JIS = 該当文字なし / UTF-16 = 4 バイト / UTF-8 = 4 バイト
> となるような文字もあります。(“吉野家”の「つちヨシ」など)
>
>
> かといって、文字幅で換算するというわけにもいきませんしね。
> (ゼロ幅文字、合成文字、タブ文字などの対応が微妙になるので…)


>
>
> もし、「Shift_JIS データの入力欄」として使用するのが目的なら、
> Shift_JIS 非該当の文字入力が行われないような制限も必要ですね。
>
>
>
>>C#でテキストボックスに文字数制限をしたいのですが
>> textBox5.MaxLength = 8;
>
> 今ご覧になられている掲示板の上部リンク(左から2番目)から
> C# と VB.NET の入門サイトのサンプルページに移動した後、
>
>  [サンプル]
>   +[Visual C# .NET]
>    +[テキストボックス]
>     +[入力可能な文字バイト数を設定する]
>
> を利用してみるというのは如何でしょうか。

細かく教えていただきありがとうございます。
ひらがな = 2 バイトで考えていたのでできなかったみたいです...。
勧めてくださったサンプルページを活用してみたいと思います。
引用返信 編集キー/
■78102 / inTopicNo.12)  Re[3]: 文字数制限
□投稿者/ WebSurfer (739回)-(2015/12/14(Mon) 15:04:18)
No78101 (SVO さん) に返信

「SVO」さん = 「みさきZ」さんなのでしょうか?

そうであれば、2 つ以上の ID を使いまわすのは止めていただきたいです。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -