我无法让WinForms的RichTextBox
显示一些Unicode字符,特别是数学字母符号(但问题很可能不仅限于这些字符)。
令人惊讶的是,相同的字符可以在普通或多行TextBox
中使用相同(默认)字体显示。即使我将字体更改为例如"Arial"或"Lucida",也会得到相同的结果。
屏幕截图来自Windows 10,但我在Windows 7上也得到了相同的结果。该示例显示了ASCII小写字母a-d后跟数学斜体无衬线小写字母alpha-delta。
我正在使用Visual Studio 2017和.NET 4.6.1。
下面是一个简单的测试代码:
private void InitializeComponent()
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
// ...
this.SuspendLayout();
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(25, 38);
this.textBox1.Multiline = true;
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(182, 108);
this.textBox1.TabIndex = 0;
this.textBox1.Text = "abcd ";
//
// richTextBox1
//
this.richTextBox1.Location = new System.Drawing.Point(213, 38);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(179, 108);
this.richTextBox1.TabIndex = 1;
this.richTextBox1.Text = "abcd ";
// ...
}
请注意,似乎不是存储字符的问题。这些字符已正确存储在 RichTextBox
中。如果将文本复制并粘贴到其他地方(例如 TextBox
),所有字符都会正确显示。另一方面,如果将这些字符粘贴到
RichTextBox
中,则会出现相同的不正确显示。因此,看起来只是一个显示问题。
RichTextBox
的 源代码,我期望它能正常工作。请确保您在AppContextSwitchOverrides
中没有打开Switch.System.Windows.Forms.DoNotLoadLatestRichEditControl
。 - Reza Aghaei