繁体   English   中英

C#中的Winform停止显示unicode中文字符

[英]Winform in C# stopped displaying unicode Chinese characters

我有一个奇怪的Unicode字符显示Visual Studio 2010 C#Winform中的行为。 我使用的是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();
}

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

Microsoft有时会自动为您切换字体,例如,当您将初始化文本复制粘贴到Word中时,您会看到英文部分是用Arial等编写的,而中文文本是自动切换到SimSun或默认的任何内容中文字体在您的计算机上。 我想这是首先正确显示文本时发生的事情。 然后,当保存项目时,它有一个按钮标题不能使用两种不同的字体的问题,所以它将按钮字体保存为Microsoft Sans Serif,现在因此而给你方框。 解决方案是使用SimSun或Ms Song作为按钮,因为这些字体可以显示英文和中文字符。 如果您希望相同的按钮也显示德语或韩语等,您将遇到问题。 如果是这种情况,则需要根据本地化语言动态设置按钮字体。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM