【问题标题】:RichTextBox using CFM_LINK | CFM_COLORRichTextBox 使用 CFM_LINK | CFM_COLOR
【发布时间】:2014-09-12 21:17:12
【问题描述】:

我正在尝试更改 RichTextBox 中链接的颜色。我一直使用http://www.codeproject.com/Articles/9196/Links-with-arbitrary-text-in-a-RichTextBox 作为将链接插入RTF 的基础。将 CFM_COLOR 添加到 dwMask 时,它不使用指定的颜色。不过 CFM_BACKCOLOR 工作正常。

var cf = new CHARFORMAT2_STRUCT();
cf.cbSize = (UInt32)Marshal.SizeOf(cf);
cf.dwMask = CFM_LINK | CFM_COLOR;
cf.dwEffects = CFE_LINK;
cf.crTextColor = ColorTranslator.ToWin32(LinkColor);

有没有办法覆盖默认的超链接颜色?

【问题讨论】:

    标签: c# richtextbox


    【解决方案1】:

    查看文档,似乎crTextColor 需要一个ColorRef 对象。尝试将您的颜色转换为它。为方便起见,让我们制作一个宏来制作颜色参考:

    COLORREF RGB(
      BYTE byRed,
      BYTE byGreen,
      BYTE byBlue
    );
    

    然后,在您的超链接部分中向下几行:

    ...
    // I don't know how LinkColor is defined here, 
    // but this should put you on the right track.
    var color = RGB(LinkColor.Red, LinkColor.Green, LinkColor.Blue);
    cf.crTextColor = color;
    

    【讨论】:

    • 最初我的 cf.crTextColor = LinkColor.ToARGB 没有给出正确的代码,但是只要我省略 CFM_LINK 标志,ColorTranslator.ToWin32(LinkColor) 就会正确地为代码着色。我会尝试创建 COLORREF 结构。干杯!
    • 是的,听起来 ToARGB 不起作用,因为它只处理 RGB 值,所以是的,试试看它是否有效。
    猜你喜欢
    • 2019-10-25
    • 2010-11-02
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2012-11-05
    相关资源
    最近更新 更多