在列表中添加“圆形”项目符号样式时遇到问题。我试着将它编码成一个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的“唯一支持”磁盘值。但如果我从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中,所以它让我认为这是可以做到的。
最佳答案
您可以使用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);