RichTextBox使用CFM_COLOR代码更改字体颜色

时间:2019-06-11 13:27:30

标签: c# colors richtextbox windows-forms-designer

我正在开发Windows窗体中的文本编辑器,为此我使用RichTextBox小部件。我遇到一个问题,当选择不同样式的文本时,选择将返回一个空值,这使我无法更改包含Verdana和Arial部分内容的文本的大小。

为解决此问题,我创建了一个新类来操纵CHARFORMAT结构,并根据我想更改的样式发送消息。现在,我需要创建一个函数来更改用户选择的字体颜色。为此,我需要CFM_COLOR标记,我不知道它是什么,而且似乎在任何地方都找不到。

    [Browsable(false)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    public Color SelectionFontColor
    {
        set
        {
            CHARFORMAT cf = new CHARFORMAT();
            cf.cbSize = Marshal.SizeOf(cf);
            cf.dwMask = CFM_COLOR;
            // There might be some missing code
            ???
            SendMessage(Handle, EM_SETCHARFORMAT, SCF_SELECTION, ref cf);
        }
    }

2 个答案:

答案 0 :(得分:1)

来自referencesource.microsoft.com上的RichTextBoxConstants.cs

internal const int CFM_COLOR               = 0x40000000;

答案 1 :(得分:1)

  

我遇到一个问题,当选择不同样式的文本时   件,选择将返回空值

我无法重现您的问题:例如,我选择了具有不同样式的文本,并用 richTextBox1.SelectionColor 将所选文本涂成橙色 =>

enter image description here