2011-08-30 64 views
2

在WPF .NET 4.0的RichTextBox用以下文字:格式化文本的specifc線在WPF的RichTextBox

蘋果

奶酪

橙色

我將如何以編程方式與C#(不與X AML標記),是否以字符「C」開頭的所有行加粗?

更一般地說,如何從RichTextBox中獲取對給定文本行的引用,然後對其應用某些格式?

回答

2

嗯,這比我想象的麻煩,但我認爲下面的代碼做的:

 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; 
     } 

基本上,在RichTextBox保持其在FlowDocument的內容(通過文件屬性來訪問),這反過來有包含每個段落的塊的集合。實際上,Blocks集合中的每個項目都可以是派生自抽象類Block的任何東西......但我假設您只是向RichTextBox添加簡單文本,那麼它們總是隻是段落。請參閱here以獲得更好的解釋!

最棘手的部分是,要使文本脫離段落,您需要使用TextRange類...但好消息是,一旦我們有文本,段落就具有簡單的屬性,用於設置字體重量等!