簡體   English   中英

C# - 動態更改RichTextBox中的文本字體?

[英]C# - Change font of text in RichTextBox dynamically?

我在“richTextBox”和“comboBox”中有一些文本,其中包含一些字體的名稱。 如果從“comboBox”中選擇了新字體,我想更改“richTextBox”中的文本字體。 我正在使用以下代碼。

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    if (comboBox1.SelectedIndex == 1)
        richTextBox1.Font = new Font("Comic Sans MS", 14);
}

問題是,如果我選擇字體,文本不會自動更改其字體,只有在我鍵入一些新文本時才會更改。 我也嘗試過richTextBox1.SelectionFont而不是richTextBox1.Font 我還添加了InputTextBox.Refresh(); 在上面的代碼之后刷新文本框但是靜脈。

如何通過從comboBox中選擇來更改文本的字體?

更新:我剛剛發現上面的代碼很好,問題是我使用了錯誤的事件調用,使用comboBox1_SelectedValueChanged()代替comboBox1_SelectedIndexChanged() ,它現在工作正常。

提示:如果要更改整個TextBox的字體,請使用richTextBox1.Font ,如果要更改所選文本的字體,請僅使用richTextBox1.SelectionFont

您可以在更改SelectedFont選項之前選擇所有文本:

this.richTextBox1.SelectAll();
this.richTextBox1.SelectionFont = newFont;

你必須在整個文本中進行迭代。 這是一種可能對您有所幫助的方法:

private void ChangeFontStyleForSelectedText(string familyName, float? emSize, FontStyle? fontStyle, bool? enableFontStyle)
    {
        _maskChanges = true;
        try
        {
            int txtStartPosition = txtFunctionality.SelectionStart;
            int selectionLength = txtFunctionality.SelectionLength;
            if (selectionLength > 0)
                using (RichTextBox txtTemp = new RichTextBox())
                {
                    txtTemp.Rtf = txtFunctionality.SelectedRtf;
                    for (int i = 0; i < selectionLength; ++i)
                    {
                        txtTemp.Select(i, 1);
                        txtTemp.SelectionFont = RenderFont(txtTemp.SelectionFont, familyName, emSize, fontStyle, enableFontStyle);
                    }

                    txtTemp.Select(0, selectionLength);
                    txtFunctionality.SelectedRtf = txtTemp.SelectedRtf;
                    txtFunctionality.Select(txtStartPosition, selectionLength);
                }
        }
        finally
        {
            _maskChanges = false;
        }
    }

如果你想看看我是怎么做到的,你可以閱讀這篇文章: http//how-to-code-net.blogspot.ro/2014/01/how-to-make-custom-richtextbox-control.html祝你好運;)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM