C# RichTextBox使用CFM_颜色代码更改字体颜色

C# RichTextBox使用CFM_颜色代码更改字体颜色,c#,colors,richtextbox,windows-forms-designer,C#,Colors,Richtextbox,Windows Forms Designer,我正在Windows窗体中开发一个文本编辑器,为此我使用RichTextBox小部件。我遇到了一个问题,当选择不同样式的文本片段时,选择将返回一个空值,这使我无法更改包含Verdana和Arial部分的文本的大小 为了解决这个问题,我创建了一个新类,该类处理CHARFORMAT结构,并根据我想要更改的样式发送消息。现在我需要做一个函数来更改用户选择的字体颜色。为此,我需要CFM_彩色标签,我不知道它是什么,而且我似乎在任何地方都找不到 [可浏览(错误)] [DesignerSerializati

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

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

[可浏览(错误)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
公共颜色选择FontColor
{
设置
{
CHARFORMAT cf=新的CHARFORMAT();
cf.cbSize=Marshal.SizeOf(cf);
cf.dwMask=CFM_颜色;
//可能缺少一些代码
???
SendMessage(句柄、EM_设置字符格式、SCF_选择、参考cf);
}
}
来自referencesource.microsoft.com:

internal const int CFM_COLOR               = 0x40000000;
我遇到了一个问题,在选择不同样式的文本时 则选择将返回空值

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


我想我表达得不好。颜色始终可以正确更改,因为它不需要来自所选文本的任何信息。但由于我创建了更改字体、大小等的函数。。这克服了不同风格的问题,我决定创造一个改变字体颜色,只是为了连贯性。非常感谢。