0

Visual Studio 2010 C#Winformで動作を表示する奇妙なUnicode文字があります。私はWindows7x64を使用しています。どういうわけか、コードでこのようなことをすることができ、ボタンを押したときに文字が正しく表示されるようになりました。フォントはデフォルトのMicrosoftSansSerifでした。

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

ただし、プロジェクトを閉じて再度開いた後、ボタンには文字が欠落しているように2つの正方形しか表示されなくなりました。何が変わったのか、なぜ初めて機能したのかわかりません。

いくつかの投稿は、コントロールにMSゴシックを使用することを提案しましたが、いくつかの理由で、プロパティウィンドウでそれを選択することさえできません。コントロールパネル->フォントでチェックインしたので、フォントは私のシステムにあります。MSゴシックがそこにいました。

MSゴシックフォントを許可するためにwinformのフォント設定を変更した可能性のある設定はありますか?

これを機能させる唯一の方法は、ボタンのペイントイベントをオーバーライドして、そこでレンダリングを行うことです。ただし、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またはMsSongです。

Microsoftは、フォントを自動的に切り替えることがあります。たとえば、初期化テキストをWordにコピーアンドペーストすると、英語の部分がArialなどで記述され、中国語のテキストが自動的にSimSunなどのデフォルトに切り替えられます。コンピューター上の中国語フォント。これは、最初にテキストが正しく表示されたときに起こったことだと思います。次に、プロジェクトを保存するときに、1つのボタンのキャプションを2つの異なるフォントにできないという問題があったため、ボタンのフォントをMicrosoft Sans Serifとして保存し、そのために正方形のボックスが表示されるようになりました。解決策は、ボタンにSimSunまたはMs Songを使用することです。これらのフォントは、英語と中国語の両方の文字を表示できるためです。ただし、同じボタンにドイツ語や韓国語なども表示したい場合は、問題が発生します。その場合は、

于 2013-02-22T18:16:56.667 に答える