RichTextBox设置/更改用于选择的下划线颜色(\ ulcN)和下划线样式(例如\ ulwave)

问题描述 投票:1回答:1

我已经使富文本框已经接受\ 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)

然后为富文本框中当前选定的文本设置下划线颜色/样式。 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;
        }
    }
}
c# winforms richtextbox styling underline
1个回答
-1
投票

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

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

您将与ListBoxEx.cs

PictureBoxEx.cs一起在Tools \ Controls文件夹中找到。

请参见http://qurancode.com上正在使用的完整的开源C#库。

通过帮助他人来帮助自己...

Ali

© www.soinside.com 2019 - 2024. All rights reserved.