0

太字/斜体/下線の書式を消去せずにRTFのチャンクのフォントサイズを変更したい(この質問の問題と同様の問題)。受け入れられた答えは、個別に変更できる一貫してフォーマットされたテキストの実行を見つけるために、SelectionFontプロパティがnullになるまでテキストボックスの選択を変更することです。合理的に聞こえます。ただし、RichTextBoxコントロールの実際の動作は、ドキュメントと矛盾しているようです。

RichTextBox.SelectionFontMSDNのドキュメントには次のように記載されています。

現在のテキスト選択に複数のフォントが指定されている場合、このプロパティはnullです。

ただし、太字と通常のテキストが混在するこのコードは、期待どおりに動作しません。

var rtb = new RichTextBox {
    Rtf = @"{\rtf1 This is \b bold\b0.}"
};

rtb.SelectAll();
// Now you'd expect rtb.SelectionFont to be null,
// but it actually returns a Font object

他のフォーマットを壊すことなくフォントサイズを変更できるように、テキストをフォーマットする他の信頼できる方法はありますか?(RTFを直接操作することは問題ありません。これを実現するために、WinFormsを使用することに完全に固執しているわけではありません)。

4

2 に答える 2

0

私はこれを修正するためにWinformsを通過しようとするのをあきらめました。変更を(一部だけでなく)ドキュメント全体に適用しているので、RTFを直接変更するのはそれほど難しくないことがわかります。

この場合、コマンドで表されるフォントサイズに関心があり\fsます。したがって、すべての8.5ptテキストを10ptテキストに置き換えるには、に置き換えることができ\fs17ます\fs20。(はい、RTFフォントサイズは0.5ポイント単位で表示されます)。

これは十分に機能しているように見えますが、「正規表現を使用してHTMLをマングルしよう」タイプのソリューションの1つであるように感じられるため、非常に堅牢であるとは確信していません。

于 2012-11-05T19:54:05.803 に答える
0

これを見てください: フォーマットを失うことなくリッチテキストボックスのフォントを変更する

同じ問題だと思います。LarsTech のソリューションは私にとって完璧に機能しています。

于 2013-10-13T01:40:59.007 に答える