如何将圆列表样式添加到RichTextBox中的项目符号列表?

时间:2016-03-18 14:01:28

标签: c# html winforms richtextbox

在我的列表中添加“圆圈”子弹样式时出现问题。我已经尝试将其编码为WebBrowser对象然后将其传递到RTB,我也尝试过richtextbox.rtf但没有成功。

对于我尝试过的HTML:

WebBrowser webBrowser1 = new WebBrowser();
string content;
        content = "<html><body><font size=4><b>" + projects[0].ProjectName.ToString() + "</font></b> <br> <u>Description</u>: "
            + projects[0].Objective.ToString() + "<br><u>Benefits</u>: <ul style=\"list-style-type:circle\"><li>Near-Term --</li>"
            + "<ul style=\"list-style-type:circle\"><li type=\"circle\">" + projects[1].ShortTerm.ToString() + "</li></ul></ul></body></html>";
webBrowser1.Navigate("about:blank");
webBrowser1.Document.Write(content);
webBrowser1.Document.ExecCommand("SelectAll", false, null);
webBrowser1.Document.ExecCommand("Copy", false, null);
projectsEditor1.RichTextBox.Paste();

这将正确输出所有内容,但是应该是空心圆圈的嵌套项目符号只是默认的“光盘”值。我尝试将这种类型都放在li和ul中,但两者都没有运气。这个例子只是告诉我这两个都希望它可行。我已经看到RTB的“唯一支持”光盘值。但是,如果我从单词中获取子弹列表并将其复制/粘贴到我的RTB中,则会显示圆形子弹。是否可以将圆值编程为RTB?

我当前的代码因为HTML不起作用就是这样:

                projectsEditor1.RichTextBox.SelectionBullet = true;
                projectsEditor1.RichTextBox.BulletIndent = 20;
                projectsEditor1.RichTextBox.AppendText("Near-term –");
                projectsEditor1.RichTextBox.AppendText(Environment.NewLine);
                projectsEditor1.RichTextBox.SelectionBullet = false;
                projectsEditor1.RichTextBox.SelectionFont = new System.Drawing.Font("Calibri", 11.0F, FontStyle.Regular);
                projectsEditor1.RichTextBox.SelectionIndent = 45;
                projectsEditor1.RichTextBox.SelectionBullet = true;
                projectsEditor1.RichTextBox.BulletIndent = 20;
                projectsEditor1.RichTextBox.SelectionFont = new System.Drawing.Font("Calibri", 11.0F, FontStyle.Regular);
                projectsEditor1.RichTextBox.AppendText(project.ShortTerm.ToString());
                projectsEditor1.RichTextBox.AppendText(Environment.NewLine);
                projectsEditor1.RichTextBox.SelectionBullet = false;
                projectsEditor1.RichTextBox.SelectionIndent = 0;

但是,这只会产生与HTML相同的结果。

当前输出:

enter image description here

期望的输出:

enter image description here

就像我说过我能找到的说RTB不支持默认项目符号以外的任何内容,但你可以将它们粘贴到RTB中,所以它让我觉得可以做到。

1 个答案:

答案 0 :(得分:0)

您可以使用Unicode字符:

projectsEditor1.RichTextBox.BulletIndent = 20;
projectsEditor1.RichTextBox.AppendText("Near-term –");
projectsEditor1.RichTextBox.AppendText(Environment.NewLine);
//projectsEditor1.RichTextBox.AppendText("\u25E6".PadLeft(20));
projectsEditor1.RichTextBox.AppendText("\t\u25E6");
projectsEditor1.RichTextBox.AppendText("Some Benefits...");

修改:问题的解决方法可能是,

 var benefits = "string1\nstring2\nstring3";
 var text = benefits.Split(new char[] { '\n' })
                    .Select(t => 
                    string.Format("{0}{1}{2}", "\t\u25E6 ", t, "\n"))
                    .ToArray();
 benefits = string.Join("", text);

 // Then
 projectsEditor1.RichTextBox.AppendText(benefits);