0

我在 Visual Studio 2010 C# Winform 中有一个奇怪的 Unicode 字符显示行为。我正在使用 Windows 7 x64。出于某种原因,我能够在代码中执行类似的操作,并在按下按钮时让字符正确显示。字体是默认的 Microsoft Sans Serif。

  private void button1_Click(object sender, EventArgs e)
  {
    button1.Text = "Initialize System 初始化系统";
  }

但是,在我关闭项目并重新打开它之后,按钮现在只显示 2 个方块,就好像缺少字符一样。我不明白会发生什么变化以及为什么它第一次起作用。

一些帖子建议使用 MS Gothic 作为控件,但由于某些原因,我什至无法在属性窗口中选择它。自从我签入控制面板-> 字体以来,字体就在我的系统中。MS Gothic 在那里。

是否有一些设置可以更改 winform 中的字体设置以允许 MS Gothic 字体?

我现在可以让它工作的唯一方法是覆盖按钮的绘制事件,然后在那里进行渲染。不过,这在像 DataGrid 这样的组件上更难做到。这是适用于带有中文字符的按钮的代码:

private void _Paint(object sender, PaintEventArgs e)
{
  Button btn = (Button)sender;
  SolidBrush drawBrush = new SolidBrush(btn.ForeColor);
  StringFormat sf = new StringFormat { Alignment = StringAlignment.Center,
                                       LineAlignment = StringAlignment.Center };
  string text = "Initialize System 初始化系统";
  btnIntialize.Text = string.Empty;
  e.Graphics.DrawString(text, btn.Font, drawBrush, e.ClipRectangle, sf);
  drawBrush.Dispose();
  sf.Dispose();
}
4

1 回答 1

2

由于您使用的是简体中文而不是日文,因此正确的字体是 SimSun 或 Ms Song。

Microsoft 有时会自动为您切换字体,例如,当您将初始化文本复制粘贴到 Word 中时,您会看到英文部分是用 Arial 等编写的,而中文文本会自动切换到 SimSun 或任何默认值电脑上的中文字体。我想这就是最初正确显示文本时发生的情况。然后,在保存项目时,它遇到了一个按钮标题不能使用两种不同字体的问题,因此它将按钮字体保存为 Microsoft Sans Serif,因此现在为您提供方形框。解决方法是使用 SimSun 或 Ms Song 作为按钮,因为这些字体可以显示英文和中文字符。如果您希望同一个按钮也显示德语或韩语等,您将遇到问题。如果是这样的话,

于 2013-02-22T18:16:56.667 回答