常用屬性速查表
| 屬性 | 功能 | 建議值 |
ShowColor | 顯示顏色下拉選單 | true |
AllowScriptChange | 允許切換字元集(中文/日文等) | true |
Font | 預設/回傳選取字型 | 綁定 RichTextBox.SelectionFont |
Color | 預設/回傳選取顏色 | 綁定 RichTextBox.SelectionColor |
MinSize/MaxSize | 限制字號範圍 | 8 / 72 |
ShowEffects | 顯示底線/刪除線/顏色 | true |
ShowApply | 顯示「套用」按鈕(需處理 Apply 事件) | 視需求 |
ShowHelp | 顯示「說明」按鈕 | true |
事件
Apply:使用者按「套用」時觸發,即時預覽。
HelpRequest:按「說明」觸發,可開啟線上文件或自訂說明視窗。
最小可用範例:套用至 RichTextBox 選取文字
private void btnFont_Click(object sender, EventArgs e)
{
using (var dlg = new FontDialog())
{
dlg.Font = richTextBox.SelectionFont ?? richTextBox.Font;
dlg.Color = richTextBox.SelectionColor;
dlg.ShowColor = true;
dlg.AllowScriptChange = true;
dlg.ShowEffects = true;
dlg.MinSize = 8;
dlg.MaxSize = 72;
if (dlg.ShowDialog() == DialogResult.OK)
{
richTextBox.SelectionFont = dlg.Font;
richTextBox.SelectionColor = dlg.Color;
}
}
}
進階:即時預覽(Apply 事件)
private FontDialog fontDlg;
private void btnFont_Click(object sender, EventArgs e)
{
if (fontDlg == null)
{
fontDlg = new FontDialog { ShowApply = true, ShowColor = true };
fontDlg.Apply += FontDlg_Apply;
}
fontDlg.Font = richTextBox.SelectionFont ?? richTextBox.Font;
fontDlg.Color = richTextBox.SelectionColor;
fontDlg.ShowDialog(this);
}
private void FontDlg_Apply(object sender, EventArgs e)
{
richTextBox.SelectionFont = fontDlg.Font;
richTextBox.SelectionColor = fontDlg.Color;
}
protected override void Dispose(bool disposing)
{
if (disposing) fontDlg?.Dispose();
base.Dispose(disposing);
}
常見問題
- SelectionFont 為 null:選取區塊包含多種字型 → 回傳 null。建議用
richTextBox.Font 作為預設值。
FontDialog 為 Modal 對話方塊,ShowDialog 會阻塞;若需非模態請改用自訂表單或 WPF FontDialog(需引用 System.Windows.Forms)。
- 中文字型名稱顯示為英文(如 "Microsoft JhengHei" 顯示 "Microsoft JhengHei UI")屬正常行為,實際套用無誤。