我如何在C#/。NET winform中看到这个特殊字符?

时间:2011-08-11 06:19:46

标签: .net winforms

这里有一个特殊字符http://www.fileformat.info/info/unicode/char/1f4a9/index.htm

我有正确的字体,我甚至可以在Firefox中复制/粘贴它。我可以在不使用图像的情况下在firefox中看到文本。但是当我把它粘贴到winforms时,我没有。我看到两个盒子里面各有一个?。它的一封信。奇怪的是,我可以将文本复制出来并粘贴到Firefox中并正确查看。 (注意我确保在firefox中复制/粘贴常规文本以确保我不会复制我最初复制的内容。)

我正在设置字体,因此textBox3.Font = new Font("symbola", 12); symbola具有查看该特殊字符所需的字体。事实上,在我下载它并右键单击ttf文件上的安装之前,firefox没有正确显示该字符。我从那以后重新启动了我的电脑。

如何让winform正确显示角色?

2 个答案:

答案 0 :(得分:4)

它对我有用:

private void Form1_Load(object sender, EventArgs e)
{
  button1.Font = new Font("symbola", 16); 
  button1.Text = "\U0001F4A9";
}

2评论:

  • 该字符不在BMP中:它不能使用单个16位字表示。用UTF16的说法,它是一个代理对。请注意上面源代码中所需的特殊编码。此外,此表示形式在WinForms设计器属性中不起作用。我必须在类的代码文件中分配文本。
  • 我也无法在WinForms设计器属性中分配字体:它抱怨字体不是True Type,它似乎是。再次,在代码中分配字体。

FWIW,我的测试是在Win7 x64

下使用VS2008和.NET 3.5完成的

编辑:我也在VS2010 / .NET 4和.NET 3.5下测试过它:像魅力一样工作

答案 1 :(得分:1)

您可以尝试使用RichTextBox。我在常规TextBox上使用Unicode时遇到了间歇性问题,即使正确安装了所有字体也是如此。当您从代码中设置它时,它几乎总是有效,但有时会出现交互问题。无论如何,我永远不知道它的原因,但RichTextBox通常在这些情况下起作用。