使用MessageBox.Show()
时,您可以选择MessageBoxButtons进行选择。可用的按钮是枚举,并为您提供“是否”,“确定取消”等选项
例如,当我使用挪威语消息文本时,用户仍会获得英语“是否”。
有没有办法更改按钮的文本(在C#中),以便语言正确?我可以覆盖文本,或以某种方式设置当前区域设置,以便我可以使用“Ja Nei”而不是“是否”吗?
我不想依赖在我的客户端安装.NET语言包。
答案 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
),并放置信息文本以及标有“是”和“否”的按钮(btnYes
,btnNo
)( (带有“您”语言的按钮标题)在此面板上,然后将必需的“是/否”动作放入按钮事件处理例程中。
在决策时(在我的情况下:关闭应用程序时如果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();
}