2014-09-12 1 views
1

Я пытаюсь изменить цвет ссылок в RichTextBox. Я использовал http://www.codeproject.com/Articles/9196/Links-with-arbitrary-text-in-a-RichTextBox в качестве базы для вставки ссылок в RTF. При добавлении CFM_COLOR в dwMask он не использует указанный цвет. CFM_BACKCOLOR работает нормально.RichTextBox с использованием CFM_LINK | CFM_COLOR

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); 

Можно ли переопределить цвет гиперссылки по умолчанию?

ответ

0

Посмотрите на документацию, кажется 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; 
+0

Первоначально я имел cf.crTextColor = LinkColor.ToARGB который не дал правильный код, но ColorTranslator.ToWin32 (LinkColor) правильно окрашивает код, пока я не оставляю флаг CFM_LINK. Однако я попытаюсь создать структуру COLORREF. Ура! – Daloupe

+0

Да, похоже, ToARGB не работает, потому что он имеет дело только с значениями RGB, поэтому дайте им попробовать и посмотрите, работает ли он. –

Смежные вопросы