C# WinForm RichTextBox 透過 RTF 讓文字設定不同顏色

網路上許多文章介紹 RichTextBox 文字設定不同顏色,但是很少介紹透過 RTF 格式的方式,本篇就來示範一下

建立 RichTextBox 元件

本次示範直接動態產生一個 RichTextBox ,並且占滿整個頁面
    
RichTextBox richTextBox = new ()
{
    Dock = DockStyle.Fill,
    AutoSize = true,
};
this.Controls.Add(richTextBox);
    

RTF(Rich Text Format) 是一種文字格式,最基本的內容如下:
    
{\rtf1
AAA\par
BBB\par
}
    

\rtf1 是指 RTF 版本 1.0
\par 是換行
然後我們就可以把內容放入 RichTextBox 中
    
richTextBox.Rtf =
    @"{\rtf1
AAA\par
BBB\par
}
";
    

接下來都會直接呈現 RTF 內容,不會再特別示範放入 RichTextBox 的 Rtf 中

指定文字顏色

我們可以使用 \colortbl 來說明要設定顏色,後面直接接續顏色,而顏色的定義則是使用 RGB 的表達方式,可以設定為 0 ~ 255。
    
{\rtf1
{\colortbl;\red0\green150\blue0;\red255\green97\blue0;\red255\green0\blue0;\red0\green0\blue0;}
AAA\par
BBB\par
\cf1 111\par
\cf2 222\par
\cf3 333\par
\cf4 444\par
CCC\par
}
    

上面我們定義了四種顏色:
  • \red0\green150\blue0; 綠色
  • \red255\green97\blue0; 橘色
  • \red255\green0\blue0; 紅色
  • \red0\green0\blue0; 黑色
要使用也很簡單,\cf1 ,最後面的數字就是第幾個顏色,所以上面的就是 \cf1, \cf2, \cf3, \cf4 。
註:筆者在測試時無法定義顏色的別名,希望知道的網友可以幫忙補充

使用有兩種方式:
    
\cf4 後面都是黑色
    

使用大括號指定一部份的顏色:
    
\cf3 紅色{\cf1 綠色}紅色
    

範例:
    
{\rtf1
{\colortbl;\red0\green150\blue0;\red255\green97\blue0;\red255\green0\blue0;\red0\green0\blue0;}
\cf1 綠色\par
\cf2 橘色\par
\cf3 紅色\par
\cf4 黑色\par
}


常用語法

這裡附上其他常用的 RTF 格式:
    
{\b 粗體}
{\i 斜體}
{\ul 底線}
{\strike 刪除線}
這是大括號: \{\}
    

留言