@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

C# TextBox WordWrapの改行について

1
投稿者投稿内容
まー
会議室デビュー日: 2006/06/25
投稿数: 4
投稿日時: 2006-06-25 22:06
はじめまして、C#初心者です。
現在C#でWindowsアプリケーションを作成しており、
データベースからデータを複数行のTextBoxに呼び出しています。
TextBoxのプロパティは
WordWrap = true
Multiline = true
にしています。
TextBoxにはデータが改行された状態で表示されておりボタンイベントを発生させた時にその表示に合わせた箇所に改行コードを入れたいと思っています。
ですが、表示とマッチしたところに改行コードを入れる方法がわからず四苦八苦しております。
どなたかご教授お願いします。


[ メッセージ編集済み 編集者: まー 編集日時 2006-06-25 22:09 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-25 22:10
引用:

まーさんの書き込み (2006-06-25 22:06) より:

表示とマッチしたところに改行コードを入れる方法がわからず四苦八苦しております。


どこまで四苦八苦したのでしょうか?
その具体的な内容こそが、大事だと思います。(どこで躓いているのか不明なため)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まー
会議室デビュー日: 2006/06/25
投稿数: 4
投稿日時: 2006-06-25 22:39
返答ありがとうごさいます。
具体的な箇所はTextBoxに表示させたデータをCrystalReportsで印刷しているのですが、
印刷時にTextBoxの表示とCrystalReportsでの表示でずれが生じてしまっているので、TextBoxに改行コードを入れることでそのずれを解消したいと思っています。
TextBoxの表示部で改行している行の終端の文字を取得し、そこに改行コードを入れたいと思っているのですが各行の終端の文字を取得する方法がわかりません。
TextBox.Linesを取得しても元が一行の文字列なので区切りようが無く困っています。
何かよい方法などはありますでしょうか?
深山
ベテラン
会議室デビュー日: 2006/05/09
投稿数: 66
お住まい・勤務地: 都内某所
投稿日時: 2006-06-26 01:07
引用:

まーさんの書き込み (2006-06-25 22:39) より:

TextBoxの表示部で改行している行の終端の文字を取得し、そこに改行コードを入れたいと思っているのですが各行の終端の文字を取得する方法がわかりません。


表示部で改行している行とは、WordWrapプロパティで自動折り返しされた部分のことでしょうか?
でしたら、APIのGetTextExtentExPointを使って表示できるバイト数を取得して、
改行コードを入れたらどうですか?

または、フォント幅を取得して、逆算して求めるとか?
文字列の表示サイズを取得を参考にすればできそうな気がします。

#もしかしたら、もっといい方法があるかもしれませんが・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-28 22:19
 Windows Form の大きさが変更できて、
TextBox の大きさがそれに追従するなら、
TextBox で表示されている最終文字を調べるというのは、
意味がないと思います。

 CrystalReport の方で、大きさを調整するしかないと思います。こちらは、大きさが変わりませんから。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-06-29 00:13
引用:

まーさんの書き込み (2006-06-25 22:39) より:

具体的な箇所はTextBoxに表示させたデータをCrystalReportsで印刷しているのですが、印刷時にTextBoxの表示とCrystalReportsでの表示でずれが生じてしまっているので、TextBoxに改行コードを入れることでそのずれを解消したいと思っています。


おっ、CrystalReports 絡みですか。

固定ピッチ フォントで 「n 文字で改行」 と決め打ちしてしまった方が良いのではないでしょうか。
帳票に出力される文字の大きさやマージンは、プリンタ ドライバに依存します。
"自動" の折り返しを意識して、"手動" にレイアウトを展開するのは至難の技だと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
まー
会議室デビュー日: 2006/06/25
投稿数: 4
投稿日時: 2006-07-01 12:43
みなさん、返信ありがとうございます。現在は別の作業も並行しているためこちらの改行の方はあまり手をつけれていない状態です。何か進展があれば結果をご報告したいと思います。
1

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