RichTextBox изменяет цвет шрифта с помощью кода CFM_COLOR - PullRequest
1 голос
/ 11 июня 2019

Я занимаюсь разработкой текстового редактора в Windows Forms, для которого я использую виджет 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 ]

1 голос
/ 11 июня 2019

Я столкнулся с проблемой, когда при выборе другого стиля текста штук, выбор будет возвращать нулевое значение

Я не могу воспроизвести вашу проблему: например, я выделяю текст с разными стилями и окрашиваю в оранжевый цвет выделенного текста с помощью richTextBox1.SelectionColor =>

enter image description here

1 голос
/ 11 июня 2019

Из RichTextBoxConstants.cs по адресу referenceource.microsoft.com:

.
internal const int CFM_COLOR               = 0x40000000;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...