【问题标题】:Greek letter display issue希腊字母显示问题
【发布时间】:2018-07-24 14:24:39
【问题描述】:

我想在富文本框中显示希腊字母 lambda(winforms 4.5.2)。

我的 RTF 将如下所示:

richTextBox1.Rtf = "{\\rtf1\\ansi\\deff0{\\fonttbl{\\f0\\fswiss\\fcharset0 Arial;}}\\uc1\\pard\\f0\\fs24 pdioxaborolan-2-yl)phenyl]-λ⁶-sulfane}";

但它总是将 λ⁶ 显示为两个 ?? (问号)

我也试过直接用\u03BB代替希腊符号,输出没有任何变化。

请帮忙显示希腊字母。

如果我直接分配文本,那么它可以工作。

richTextBox1.Text = "pdioxaborolan-2-yl)phenyl]-λ⁶-sulfane";

(在这种情况下,lambda 显示为希腊字母,但上标显示为框)

谢谢...

【问题讨论】:

  • 您的richTextBox1.Text = "..." 示例适用于我的两个字符,请确保您使用的字体实际上具有上标字符。您始终可以往返 - 手动设置正确的值(或粘贴)然后转储richTextBox1.Rtf 以查看实际的标记格式是什么。
  • 但我需要将 RTF 分配给richTextBox,而不是作为文本
  • 您需要使用RICHEDIT50W。看看this post。你可以找到一个例子here

标签: c# winforms c#-4.0 richtextbox


【解决方案1】:

简短的回答是您显示的RTF不支持字符,我猜是字体。

作为测试,我在 Richtextbox(RTB) 中添加了一些文本。 RTB 的字体不支持这些字符。使用此代码,我能够将您的文本正确添加到 RTB 的末尾

    RichTextBox1.SelectionStart = RichTextBox1.TextLength - 1
    RichTextBox1.SelectionLength = 0

    RichTextBox1.SelectedRtf = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Times New Roman;}{\f1\fnil\fcharset161{\*\fname Times New Roman;}Times New Roman Greek;}}\uc1\pard\f0\fs24 pdioxaborolan-2-yl)phenyl]-\f1\'eb\f0\u8310?-sulfane}"

结果

sd              486
sdivs             1
------------
Total           531

Other           540  e.g. text, comment

pdioxaborolan-2-yl)phenyl]-λ⁶-sulfane

【讨论】:

  • 感谢 dbasnett。我的实际要求是动态形成 RTF 并显示内容,因为文本将根据输入进行更改。现在,我正在做的快速解决方法是创建一个临时的 Richtextbox 并分配文本,然后从 tempRichTextBox 中取出 RTF。我需要为其他一些保存目的创建 RTF。
猜你喜欢
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 2021-07-16
  • 2021-07-02
相关资源
最近更新 更多