首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# RichTextBox 實現 Word 風格加粗按鈕:狀態同步與切換

     編輯:程式設計綜合問答

需求

工具欄加粗按鈕按下凹陷(狀態激活),輸入文字自動加粗;光標移動到非加粗文本按鈕彈起,點擊按鈕切換當前選區/輸入位置加粗狀態。

核心邏輯

  1. 按鈕點擊切換選區格式:
    private void btnBold_Click(object sender, EventArgs e) {
        Font currentFont = richTextBox.SelectionFont;
        FontStyle newStyle = FontStyle.Regular;
        if (currentFont != null) {
            newStyle = currentFont.Style ^ FontStyle.Bold; // 異或切換
        }
        richTextBox.SelectionFont = new Font(currentFont ?? richTextBox.Font, newStyle);
        btnBold.Checked = (newStyle & FontStyle.Bold) != 0; // 同步按鈕狀態
    }
  2. 光標位置改變時同步按鈕狀態:
    private void richTextBox_SelectionChanged(object sender, EventArgs e) {
        Font font = richTextBox.SelectionFont;
        btnBold.Checked = (font != null && (font.Style & FontStyle.Bold) != 0);
        // 同理處理斜體、下劃線等按鈕
    }
  3. 按鈕外觀:設置 CheckOnClick = true、FlatStyle = FlatStyle.Standard,點擊自動呈現按下/彈起視覺效果。

關鍵點

  • SelectionFont 為 null 表示選區混合格式,按鈕顯示為未選中(或半選中狀態需自繪)。
  • FontStyle 位運算:^ 切換,& 判斷,| 添加。
  • 若需保存/載入 RTF,直接用 richTextBox.Rtf 屬性。

此模式可擴展至字體、字號、顏色等所有富文本格式控件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved