:フォーマットspecifc行次のテキストWPF、.NET 4.0のRichTextBoxで
アップル
チーズ
オレンジ
梨
チキン
どのように私はプログラムでC#で、(XではなくAMLマークアップ)、文字「C」で始まるすべての行を太字にしますか?
さらに一般的には、RichTextBoxから特定のテキスト行への参照を取得してから、それにいくつかの書式を適用しますか?
:フォーマットspecifc行次のテキストWPF、.NET 4.0のRichTextBoxで
アップル
チーズ
オレンジ
梨
チキン
どのように私はプログラムでC#で、(XではなくAMLマークアップ)、文字「C」で始まるすべての行を太字にしますか?
さらに一般的には、RichTextBoxから特定のテキスト行への参照を取得してから、それにいくつかの書式を適用しますか?
まあ、私は予想以上にトリッキーだったが、私は以下のコードは、それをしないと思う:
foreach (var paragraph in richTextBox1.Document.Blocks)
{
var text = new TextRange(paragraph.ContentStart,
paragraph.ContentEnd).Text;
paragraph.FontWeight = text.StartsWith("C") ?
FontWeights.Bold : FontWeights.Normal;
}
は基本的には、リッチテキストボックスは、順番に持っている(Documentプロパティを介してアクセスする)FlowDocumentでその内容を、保持しています各段落を含むブロックの集合。実際には、Blocksコレクションの各項目は、抽象クラスBlockから派生したものでもかまいませんが、RichTextBoxに単純なテキストを追加するだけであれば、常に段落になります。より良い説明については、hereを参照してください!
TextRangeクラスを使用する必要がある段落からテキストを取得するのが最も難しい部分ですが、良いニュースは、テキストを取得したら段落に簡単なプロパティが設定されていますフォントの太さ、等!