MessageBox.Show()
を使用すると、 MessageBoxButtons から選択できます。使用可能なボタンは列挙型であり、「はいいいえ」、「OKキャンセル」などのオプションを提供します。
たとえば、ノルウェー語のメッセージテキストを使用している場合でも、ユーザーは英語の「はいいいえ」を受け取ります。
言語が正しくなるようにボタンのテキスト(C#)を変更する方法はありますか?テキストを上書きしたり、現在のロケールを何らかの方法で設定して、「はいいいえ」ではなく「JaNei」を使用できるようにすることはできますか?
クライアントに.NET言語パックをインストールすることに依存したくありません。
.NETではこれをネイティブでサポートしていません(とにかく、私が知る限り、間違っている場合は訂正してください)。私はこのCodeProjectの記事に出くわしました。これは、メッセージのフックとP/Invokeでうまくいくようです: http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx
通常、メッセージボックスボタン(すべてのWindowsと同様)は、現在設定されているWindowsのUI言語を尊重します。したがって、英語のインストールがあり、言語(MUIバージョンまたはVista/7用のUltimate)を変更できない場合は、運が悪いことになります。
自分でメッセージボックスを実装することもできますが、実装しないでください。ボタンの一般的なホットキー、Ctrl + Insを使用してコンテンツをコピーする機能などの単純なものは、人々が四角いホイールを再発明し始めたときに私が最も見逃しているものです。
それは可能ではないと思いますが、MSDNの記事MessageBox.Showメソッドを参照してください。あなたはいくつかのアイデアを得るかもしれません。メッセージボックスのテキストを変更できます。独自のメッセージボックス(新しいフォーム)を作成して表示するのはどうですか?
プロパティVisible=false
を使用してパネル(pnlExitMode
)を作成し、情報テキストとボタン(btnYes
、btnNo
)にYESおよびNO(このパネルに「あなたの」言語のボタンキャプションを付けて)、必要なはい/いいえアクションをボタンイベント処理ルーチンに配置します。決定時に(私の場合:アプリケーションを閉じるときにini
ファイルがまだ書き込まれていない場合の警告)、パネルをVisible
に設定します。ボタン付きのパネルがポップアップします。
サンプルコード:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (bIniModified)
{
pnlExitMode.Visible = true; pnlExitMode.BringToFront();
e.Cancel = true;
}
}
private void btnYes_Click(object sender, EventArgs e)
{
SaveToIni();
pnlExitMode.Visible = false; bIniModified = false;
Application.Exit();
}
private void btnNo_Click(object sender, EventArgs e)
{
pnlExitMode.Visible = false; bIniModified = false;
Application.Exit();
}