【问题标题】:RichTextBox changing Font Color using CFM_COLOR codeRichTextBox 使用 CFM_COLOR 代码更改字体颜色
【发布时间】:2019-10-25 22:40:50
【问题描述】:

我正在 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);
        }
    }

【问题讨论】:

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


    【解决方案1】:

    来自RichTextBoxConstants.cs@referencesource.microsoft.com:

    internal const int CFM_COLOR               = 0x40000000;
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我想我表达得很糟糕。颜色始终可以正确更改,因为它不需要来自所选文本的任何信息。但由于我创建了更改字体、大小等的函数,克服了不同样式的问题,我决定创建一个用于更改字体颜色的函数,只是为了连贯性。谢谢!
      猜你喜欢
      • 2013-06-15
      • 1970-01-01
      • 2013-10-25
      • 2012-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      相关资源
      最近更新 更多