5

太字/斜体、インデントなどの標準的な「書式設定」を使用して、RichText を作成してクリップボードにコピーする必要があります。私が今やっている方法は、ちょっと洗練されていないようです...私は RichTextBox アイテムを作成し、それを通してフォーマットを適用しています:

RichTextBox rtb = new RichTextBox();
Font boldfont = new Font("Times New Roman", 10, FontStyle.Bold);
rtb.Text = "sometext";
rtb.SelectAll()
rtb.SelectionFont = boldfont;
rtb.SelectionIndent = 12;

もっと良い方法があるに違いありませんが、数時間検索した後、より良い方法を思いつくことができませんでした. 何か案は?

編集: RichTextBox (rtb) は、フォームのどこにも表示/描画されません。オブジェクトを使用して RichText をフォーマットしているだけです。

4

6 に答える 6

3

このプロジェクトは役に立ちましたか?

http://www.codeproject.com/KB/string/nrtftree.aspx

于 2009-06-05T17:50:23.930 に答える
3

あなたの技術は、あなたがやりたいことを達成するための素晴らしい方法だと思います。私はあなたが何を意味するか知っています...意図したもの以外にWinformsコントロールを使用しているため、一種の「汚い」と感じますが、うまくいきます。私はこのテクニックを何年も使ってきました。他の誰かが実行可能なオプションを持っているかどうかを確認することに興味があります。

于 2008-09-25T21:23:39.163 に答える
3

不必要なちらつきを避けるために、すべてを行う前にリッチテキストボックスのレイアウトを一時停止することをお勧めします。それは私がよくやっていた間違いの 1 つで、「エレガントではない」ように見えました。

于 2008-09-25T21:11:22.250 に答える
2

より「エレガント」にするために、いくつかのユーティリティ拡張メソッドを作成できます:)

public static RichTextBox Set(this RichTextBox rtb, Font font, string text)
{               
    rtb.Text = text;
    rtb.SelectAll();
    rtb.SelectionFont = font;
    rtb.SelectionIndent = 12;
    return rtb;
}

そして、次のように呼び出します。

someRtb.Set(yourFont, "The Text").AndThenYouCanAddMoreAndCHainThem();

編集:あなたがそれを表示していないことがわかりました。うーん、興味深いです。申し訳ありませんが、Rtb 以外の方法を提供するのにあまり役に立ちませんでした。

于 2008-09-25T21:19:49.313 に答える
1

また、作成直後のリッチテキストボックスのレイアウトを一時停止し、使用後に破棄する必要があります。

RichTextBox rtb = new RichTextBox();
rtb.SuspendLayout();
//richtext processing goes here...
rtb.Dispose();

そして、リッチテキスト処理に richtextbox を使用することをためらわないでください。Microsoft 自身がこのチュートリアルでこれを行っています。:-)

于 2014-11-05T23:10:00.820 に答える
0

しばらく時間が経っていることは承知していますが、rtf から html への変換に関するこのスタックオーバーフローの投稿を確認してください。おそらく、あなたのものをhtmlに変換して操作し、htmlを使用して表示するか、rtfに変換する方がはるかに簡単でしょう。

RTF を HTML に変換する

于 2011-09-05T01:34:26.103 に答える