【问题标题】:How do I add circle list style to a bullet list in RichTextBox?如何将圆形列表样式添加到 RichTextBox 中的项目符号列表?
【发布时间】:2016-07-05 07:50:22
【问题描述】:

在我的列表中添加“圆形”项目符号样式时遇到问题。我尝试将其编码为 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 的“仅支持”光盘价值。但是,如果我从 word 中获取项目符号列表并将其复制/粘贴到我的 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 相同的结果。

电流输出:

期望的输出:

就像我说的那样,我能找到说 RTB 不支持除了默认项目符号之外的任何东西,但你可以将它们粘贴到 RTB 中,所以这让我觉得可以做到。

【问题讨论】:

    标签: c# html winforms richtextbox


    【解决方案1】:

    您可以使用 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);
    

    【讨论】:

    • 这在一定程度上有效,除了我的好处属性有多个项目,这些项目由新行分隔。使用项目符号它会自动为字符串中的所有新行添加项目符号。如果我只是在 Unicode 字符中进行硬编码,它只会“标记”第一行,然后将其余部分挤在一起。当我试图弄清楚它时,我也做过类似的事情,因为圆形项目符号基本上只是 courier new 11点字体小写“o”。
    • @Student 那为什么不拆分benefits呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2017-07-14
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    相关资源
    最近更新 更多