- PR -

テキストボックスの複数行入力時の折り返しについて

投稿者投稿内容
銀狐
会議室デビュー日: 2006/01/30
投稿数: 1
投稿日時: 2006-01-30 23:10
初投稿となります。よろしくお願いいたします。

VB.Net 2003を使用しています。
テキストボックス(またはリッチテキストボックス)で複数行入力する際に10バイト毎に
折り返すようにしたいのですが、10バイトに満たない場合でも全角文字と半角文字の境界や、
スペースの位置で勝手に折り返されてしまいます。

例)「あいうabcdef」と入力すると・・・
 あいう
 abcdef
となってしまいます。これを10バイトごとに折り返すようにして
 あいうabcd
 ef
という風にしたいのです。

方法としては、
 ・何らかの方法で必ず10バイトごとでの折り返しとなるようにする
 ・10バイトごとに改行を入れる
のどちらかになるかと思いますが、ロジックが組めずに苦戦しております。
どなたかご教授いただけないでしょうか?

なお、改行を入れる場合、ユーザーが自分で入力した改行もしっかり残さなければなりません。
なおこ(・∀・)
大ベテラン
会議室デビュー日: 2004/04/08
投稿数: 174
お住まい・勤務地: 東京都
投稿日時: 2006-01-30 23:31
お世話になります。

引用:

方法としては、
 ・何らかの方法で必ず10バイトごとでの折り返しとなるようにする
 ・10バイトごとに改行を入れる


TextBox を オーバーライドして、OnKeyUp などのイベントで
System.Text.Encoding.Default.GetByteCount で、前の改行からの
バイト数を取得して、Mybase.Text += ControlChars.NewLine などで折り返す。

引用:

なお、改行を入れる場合、ユーザーが自分で入力した改行もしっかり残さなければなりません。


↑この事があるので、改行文字に対しては
内部でなんらかの情報を持つ必要があるかもしれません。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-01-31 01:00
バイト数のカウントはなおこさんの方法でやるとして

123456789あ
とかの場合はどうするんでしょう

あと、改行って何バイトになるんでしょうか
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 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
はどうです?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-31 02:04
いわゆる「泣き別れ処理」に対応させるのが難しいですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-01-31 21:51
UTF-16 だと、日本語 Windows で入力可能な文字って、全部2バイトじゃ?

EUC-jp だと、“半角カタカナ”は、表示幅は1バイト、実際には2バイトあるけど、どうします?

JIS だと、KI-KO コードは、どう扱うんでしょう?


バイト数の話をするならエンコーディングを決めろ、ってことです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-01 01:37
引用:

Jittaさんの書き込み (2006-01-31 21:51) より:

バイト数の話をするならエンコーディングを決めろ、ってことです。


この手の「半角 (死語) は 1、全角 (死語) は 2」の考えは、
Shift_JIS エンコーディングと相場が決まってませんか? (^-^;)バイト数が足らない場合は、次行へ見送りするのが普通でしょうね。
超えちゃだめなのですから、1 つ足らない方が自然です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-02-01 02:44
引用:

バイト数が足らない場合は、次行へ見送りするのが普通でしょうね。
超えちゃだめなのですから、1 つ足らない方が自然です。


例外としてはHexDumpのキャラクタ表示の右端とか。。。

本題の標準の動きを変えるのは面倒そうですね。(--

スキルアップ/キャリアアップ(JOB@IT)