- - PR -
テキストボックスの複数行入力時の折り返しについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-30 23:10
初投稿となります。よろしくお願いいたします。
VB.Net 2003を使用しています。 テキストボックス(またはリッチテキストボックス)で複数行入力する際に10バイト毎に 折り返すようにしたいのですが、10バイトに満たない場合でも全角文字と半角文字の境界や、 スペースの位置で勝手に折り返されてしまいます。 例)「あいうabcdef」と入力すると・・・ あいう abcdef となってしまいます。これを10バイトごとに折り返すようにして あいうabcd ef という風にしたいのです。 方法としては、 ・何らかの方法で必ず10バイトごとでの折り返しとなるようにする ・10バイトごとに改行を入れる のどちらかになるかと思いますが、ロジックが組めずに苦戦しております。 どなたかご教授いただけないでしょうか? なお、改行を入れる場合、ユーザーが自分で入力した改行もしっかり残さなければなりません。 | ||||||||
|
投稿日時: 2006-01-30 23:31
お世話になります。
TextBox を オーバーライドして、OnKeyUp などのイベントで System.Text.Encoding.Default.GetByteCount で、前の改行からの バイト数を取得して、Mybase.Text += ControlChars.NewLine などで折り返す。
↑この事があるので、改行文字に対しては 内部でなんらかの情報を持つ必要があるかもしれません。 | ||||||||
|
投稿日時: 2006-01-31 01:00
バイト数のカウントはなおこさんの方法でやるとして
123456789あ とかの場合はどうするんでしょう あと、改行って何バイトになるんでしょうか | ||||||||
|
投稿日時: 2006-01-31 01:19
MSDN Home > MSDN Library > .NET Development > .NET Framework SDK > .NET Framework > Reference > Class Library > System.Windows.Forms > TextBoxBase Class > Properties
.NET Framework Class Library TextBoxBase.WordWrap Property http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformstextboxbaseclasswordwraptopic.asp はどうです? | ||||||||
|
投稿日時: 2006-01-31 02:04
いわゆる「泣き別れ処理」に対応させるのが難しいですね。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-31 21:51
UTF-16 だと、日本語 Windows で入力可能な文字って、全部2バイトじゃ?
EUC-jp だと、“半角カタカナ”は、表示幅は1バイト、実際には2バイトあるけど、どうします? JIS だと、KI-KO コードは、どう扱うんでしょう? バイト数の話をするならエンコーディングを決めろ、ってことです。 | ||||||||
|
投稿日時: 2006-02-01 01:37
この手の「半角 (死語) は 1、全角 (死語) は 2」の考えは、 Shift_JIS エンコーディングと相場が決まってませんか? (^-^;)バイト数が足らない場合は、次行へ見送りするのが普通でしょうね。 超えちゃだめなのですから、1 つ足らない方が自然です。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-02-01 02:44
例外としてはHexDumpのキャラクタ表示の右端とか。。。 本題の標準の動きを変えるのは面倒そうですね。(-- |