C#Forms RichTextBox设置/更改下划线颜色(\ ulcN)和下划线样式(例如\ ulwave)以供选择

时间:2019-06-14 11:33:09

标签: c# forms richtextbox styling underline


我已使富文本框已经接受\ ulc N 和ul样式标签(例如\ ulwave,\ ulth ...),但是我不知道如何通过代码设置它们选定的文本(如richTextBox.SelectionFont = someFont;作为字体)。我已经尝试直接修改richTextBox的Rtf和SelecedRtf属性,但无法使其正常工作。

我虽然有两种方法,例如:

    static void SetSelectionUnderlineColor (this RichTextBox richTextBox, Color color)
    static void SetSelectionUnderlineStyle (this RichTextBox richTextBox, 
                                            UnderLineStyle style)
然后

wich为富文本框中的当前选定文本设置下划线颜色/样式。 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);

应显示以下内容: Expected outcome

当前,我正在使用以下代码创建一个富文本框,该文本框支持\ 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;
            }
        }
    }

谢谢您的帮助!

1 个答案:

答案 0 :(得分:-2)

希望它对可能需要它的人有用。

我尝试在此处发布 RichTextBoxEx C#类,但超出了30000的限制,因此请从https://github.com/heliwave/QuranCode下载它

您将在 Tools \ Controls 文件夹中找到 ListBoxEx.cs PictureBoxEx.cs

http://qurancode.com上查看完整的开源C#库。