如何将圆列表样式添加到 RichTextBox 中的项目符号列表?
How do I add circle list style to a bullet list in RichTextBox?
运行 遇到向我的列表添加 "circle" 项目符号样式的问题。我试过将它编码成一个 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();
这将正确输出所有内容,但是应为空心圆的嵌套项目符号只是默认 "disc" 值。我尝试将类型同时放入 li 和 ul 中,但都没有成功。这个例子只是展示了我在两者上都希望它能起作用。我已经看到 RTB 的 "only support" 盘值。但是,如果我从 word 中获取项目符号列表并将其 copy/paste 放入我的 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 中,所以我认为它可以完成。
您可以使用 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);
运行 遇到向我的列表添加 "circle" 项目符号样式的问题。我试过将它编码成一个 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();
这将正确输出所有内容,但是应为空心圆的嵌套项目符号只是默认 "disc" 值。我尝试将类型同时放入 li 和 ul 中,但都没有成功。这个例子只是展示了我在两者上都希望它能起作用。我已经看到 RTB 的 "only support" 盘值。但是,如果我从 word 中获取项目符号列表并将其 copy/paste 放入我的 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 中,所以我认为它可以完成。
您可以使用 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);