当我尝试此html内容包含text(★)时,我尝试从html创建RTF文本。我的RTF文字如下:
string rtf = @"{\rtf1{\fonttbl{\f0\froman Times New Roman;}{\f1\fnil Arial;}}{\colortbl;\red238\green122\blue3;}{{\pard {\f1 \sl240\slmult1 {\b\fs24\par \qc \cf1 {XhtmlCells}\par}{\b\fs20\par \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中显示该星形符号。 预先感谢
答案 0 :(得分:3)
解析器将在字符串开头并按扼制符看到“ Times New Roman”字体。
尝试这个:
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1031{\fonttbl{\f0\fnil\fcharset1 Segoe UI Symbol;}{\f1\fnil\fcharset0 Calibri;}}
{\*\generator Riched20 10.0.17134}\viewkind4\uc1
\pard\sa200\sl276\slmult1\f0\fs22\lang7\u9733?\f1\par
}
严重的是,这可能是字体和字符集的问题。
答案 1 :(得分:1)
尝试:
richTextBox1.Font = new Font("Arial", 14);
richTextBox1.Text = "Special character: \u20ac";
答案 2 :(得分:0)
您要定位哪个.Net框架版本?我猜是在4.7之前。
您看到的是RichTextBox的限制基于.NET 4.7之前的版本的RICHEDIT20W。在4.7.x版本中,默认设置切换为RICHEDIT50W。
最简单的解决方案是仅切换到4.7.x框架版本,只要这是一个选择即可。如果出于某种原因必须使用较旧的框架,则可以按照this example(以下为后代而复制的代码)之类的方法切换到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将为您带来比您想了解的RTF编辑器内部功能更多的东西。