MessageBox按钮 - 设置语言?

时间:2009-05-30 22:18:11

标签: c# .net localization messagebox

使用MessageBox.Show()时,您可以选择MessageBoxButtons进行选择。可用的按钮是枚举,并为您提供“是否”,“确定取消”等选项

例如,当我使用挪威语消息文本时,用户仍会获得英语“是否”。

有没有办法更改按钮的文本(在C#中),以便语言正确?我可以覆盖文本,或以某种方式设置当前区域设置,以便我可以使用“Ja Nei”而不是“是否”吗?

我不想依赖在我的客户端安装.NET语言包。

4 个答案:

答案 0 :(得分:21)

在.NET中没有本机支持(据我所知,无论如何;如果我错了,请纠正我,任何人)。我确实遇到过这篇CodeProject文章,它似乎通过一些消息挂钩和P / Invoke来解决这个问题: http://www.codeproject.com/KB/miscctrl/Localizing_MessageBox.aspx

答案 1 :(得分:15)

通常,消息框按钮(与所有Windows一样)都支持Windows当前设置的UI语言。所以,如果你有英文版的安装,不能更改语言(MUI版本或Ultimate for Vista / 7),那你就不走运了。

你可以自己实现一个消息框,但我请求你不要。简单的事情,如按钮的常用热键,能够使用Ctrl + Ins复制内容等,是人们开始重新制作方形轮时我最想念的。

答案 2 :(得分:1)

我认为不可能,但请参阅MSDN文章 MessageBox.Show Method 。你可能会得到一些想法。您可以在消息框中更改文本。如何创建自己的消息框(新表单)并显示它们?

答案 3 :(得分:0)

您可以创建一个具有属性pnlExitMode的面板(Visible=false),并放置信息文本以及标有“是”和“否”的按钮(btnYesbtnNo)( (带有“您”语言的按钮标题)在此面板上,然后将必需的“是/否”动作放入按钮事件处理例程中。 在决策时(在我的情况下:关闭应用程序时如果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();
}