DOBON.NET DOBON.NETプログラミング掲示板過去ログ

richtextboxの保存方法について

環境/言語:[C#]
分類:[.NET]

はじめまして。今、日記機能のようなもののついたWindowsアプリケーションをつくっているのですが、
richtextboxの文字を日ごとに保存する場合、RTF形式のファイルをひとつにまとめることはできるのでしょうか。
savefileメソッドを使用するとどんどん上書きされてしまって追加?みたいな形でそのファイルに加えていくことは不可能なんでしょうか?
#ヒントです。

リッチテキストからデータを取得
ファイルを開く
読み込む
後ろに追加して書き出す。
こんにちは、じゃんぬねっと です。ノリ, ^ー^)li

■No9471に返信(PINRYUさんの記事)
> savefileメソッドを使用するとどんどん上書きされてしまって追加?
> みたいな形でそのファイルに加えていくことは不可能なんでしょうか?

日にち単位で別ファイルとして保存したいのですね。

RichTextBox クラスの SaveFile() メソッド は、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsRichTextBoxClassSaveFileTopic.asp

単に RTF をストリームを使用して保存しているだけですので、
自前で StreamWriter を Append モードで追加書き込みもできますね。

StreamWriter の コンストラクタのオーバーロード ( 4 / 7 )
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemIOStreamWriterClassctorTopic4.asp
私はRTFというフォーマットに詳しくないので適当ですが、たぶん複数のRichTextBox.Rtfをそのままつなげても有効なRTFにはならないと思いますし、実際にやってみたところダメでした。

完璧にRTFをつなげようと思うと、やはりRTFの知識が必要ですし、たとえあったとしても、難しそうです。

私が試してみたところ、追加先のRTFの最後の}の前に、末尾につなげたいRTFを追加すれば、RichTextBoxに読み込んだ時に、適当なRTFに変換してくれるようです。(追加先のRTFの最後の}をとり、つなげるRTFの先頭の{をとって追加するという方法でもつながりました。)

また、下記リンクも参考になるかもしれません。

The Code Project - Insert Plain Text and Images into RichTextBox at Runtime - C# Controls
http://www.codeproject.com/cs/miscctrl/csexrichtextbox.asp
そうか!
まだ勉強不足でStreamWriterコンストラクタの存在知りませんでした。
ありがとうございます。
あと、RTF形式の最後に追加する方法というものも、考えていたのですが、具体的な方法がわからなくて困っていました。よいアドバイスありがとうございます。
お返事が遅くなってすみません。
皆さんありがとうございます。がんばってみます。

DOBON.NET | プログラミング道 | プログラミング掲示板