web-dev-qa-db-ja.com

メッセージボックスボタン-言語を設定しますか?

MessageBox.Show()を使用すると、 MessageBoxButtons から選択できます。使用可能なボタンは列挙型であり、「はいいいえ」、「OKキャンセル」などのオプションを提供します。

たとえば、ノルウェー語のメッセージテキストを使用している場合でも、ユーザーは英語の「はいいいえ」を受け取ります。

言語が正しくなるようにボタンのテキスト(C#)を変更する方法はありますか?テキストを上書きしたり、現在のロケールを何らかの方法で設定して、「はいいいえ」ではなく「JaNei」を使用できるようにすることはできますか?

クライアントに.NET言語パックをインストールすることに依存したくありません。

21
Frode Lillerud

.NETではこれをネイティブでサポートしていません(とにかく、私が知る限り、間違っている場合は訂正してください)。私はこのCodeProjectの記事に出くわしました。これは、メッセージのフックとP/Invokeでうまくいくようです: http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx

22
Fredrik Mörk

通常、メッセージボックスボタン(すべてのWindowsと同様)は、現在設定されているWindowsのUI言語を尊重します。したがって、英語のインストールがあり、言語(MUIバージョンまたはVista/7用のUltimate)を変更できない場合は、運が悪いことになります。

自分でメッセージボックスを実装することもできますが、実装しないでください。ボタンの一般的なホットキー、Ctrl + Insを使用してコンテンツをコピーする機能などの単純なものは、人々が四角いホイールを再発明し始めたときに私が最も見逃しているものです。

16
Joey

それは可能ではないと思いますが、MSDNの記事MessageBox.Showメソッドを参照してください。あなたはいくつかのアイデアを得るかもしれません。メッセージボックスのテキストを変更できます。独自のメッセージボックス(新しいフォーム)を作成して表示するのはどうですか?

1
Shoban

プロパティVisible=falseを使用してパネル(pnlExitMode)を作成し、情報テキストとボタン(btnYesbtnNo)に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();
}
0
Wbauspiess