如何显示★RichTextBox中的符号



当我尝试从html创建RTF文本时,我的html内容有文本(★).在我的RTF文本下面提到,

string rtf = @"{rtf1{fonttbl{f0froman Times New Roman;}{f1fnil Arial;}}{colortbl;red238green122blue3;}{{pard {f1 sl240slmult1 {bfs24par qc cf1 {XhtmlCells}par}{bfs20par qc cf1 {★★★✩✩}par}{{XhtmlCells use the }{b { RichTextBoxSupportsXHTML}}{ control from GotDotNet user samples to display XHTML formatted text inside a cell.}par}}}}}";

我已尝试在RichTextBox1.Rtf中加载此文本,它将显示"?"而不是"★".

你能建议我如何在RichTextBox中显示这个星形符号吗。提前感谢

解析器将在字符串的开头看到"Times New Roman"字体并阻塞。

试试这个:

{rtf1ansiansicpg1252deff0nouicompatdeflang1031{fonttbl{f0fnilfcharset1 Segoe UI Symbol;}{f1fnilfcharset0 Calibri;}}
{*generator Riched20 10.0.17134}viewkind4uc1 
pardsa200sl276slmult1f0fs22lang7u9733?f1par
}

说真的,这可能是字体和字符集的问题。

try:

richTextBox1.Font = new Font("Arial", 14);  
richTextBox1.Text = "Special character: u20ac";

您的目标.Net框架版本是什么?我猜是4.7之前的版本。

您看到的是RichTextBox基于.Net 4.7之前版本的RICHEDIT20W的局限性。对于4.7.x版本,默认设置切换为RICHEDIT50W。

最简单的解决方案是切换到4.7.x框架版本,只要这是一个选项。无论出于何种原因,如果您必须使用较旧的框架,您可以按照以下示例(下面为子孙后代复制的代码(切换到RICHEDIT50W编辑器。它从XP时代就已经存在了,所以它应该在任何地方都可以使用了。

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);
protected override CreateParams CreateParams
{
get
{
CreateParams cparams = base.CreateParams; 
if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
{
cparams.ClassName = "RICHEDIT50W";
}
return cparams;
}
}

我没有使用上面的方法,但你所经历的是一个常见的问题。搜索RichTextEdit、RICHEDIT20W和/或RICHEDIT50W将获得比您想要了解的更多的富文本编辑器内部信息。

最新更新