Я сделал свое расширенное текстовое поле уже принимающим теги \ ulc N и стиль ul (например, \ ulwave, \ ulth ...), но я не мог понять, как установить их через код для выбранного текст (например: richTextBox.SelectionFont = someFont;
для шрифта). Я уже пытался изменить свойства Rtf и SelecedRtf в richTextBox напрямую, но не смог заставить его работать должным образом.
Я думаю о двух методах, таких как:
static void SetSelectionUnderlineColor (this RichTextBox richTextBox, Color color)
static void SetSelectionUnderlineStyle (this RichTextBox richTextBox,
UnderLineStyle style)
, который затем устанавливает цвет / стиль подчеркивания для текущего выделенного текста в поле расширенного текста. Метод SetSelectionUnderlineColor, возможно, также должен добавить новый цвет в таблицу цветов в поле расширенного текста.
Пример:
richTextbox = new RichEdit50(); //Used code for RichEdit50 class below
richTextbox.Text = "Test\nTest2";
richTextbox.Select(0, 2);
richTextbox.SetSelectionUnderlineStyle(UnderLineStyle.Wave);
richTextbox.SetSelectionUnderlineColor(Color.Red);
richTextbox.Select(5, 2);
richTextbox.SetSelectionUnderlineStyle(UnderLineStyle.Thick);
richTextbox.SetSelectionUnderlineColor(Color.Green);
richTextbox.Select(7, 3);
richTextbox.SetSelectionUnderlineStyle(UnderLineStyle.Continuous);
richTextbox.Select(richTextbox.Text.Length, 0);
Должен показать что-то вроде этого:
Ожидаемый результат
В настоящее время я использую следующий код для создания расширенного текстового поля, которое поддерживает тег \ ulc N для изменения цвета подчеркивания:
public class RichEdit50 : RichTextBox
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary (string lpFileName);
protected override CreateParams CreateParams
{
get
{
CreateParams prams = base.CreateParams;
if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
{
prams.ClassName = "RICHEDIT50W";
}
return prams;
}
}
}
Заранее спасибо за помощь!