【问题标题】:MessageBox buttons - set language?MessageBox 按钮 - 设置语言?
【发布时间】:2010-10-30 04:00:53
【问题描述】:
当您使用MessageBox.Show() 时,您可以选择MessageBoxButtons。可用的按钮是一个枚举,并为您提供“Yes No”、“OK Cancel”等选项。
例如,当我使用挪威语消息文本时,用户仍然会收到英文“Yes No”。
有没有办法更改按钮的文本(在 C# 中)以使语言正确?我可以覆盖文本,或者以某种方式设置当前语言环境,以便我可以使用“Ja Nei”而不是“Yes No”吗?
我不想依赖在我的客户端安装 .NET 语言包。
【问题讨论】:
标签:
c#
.net
localization
messagebox
【解决方案1】:
您可以创建一个面板 (pnlExitMode),其属性为 Visible=false,并放置信息文本以及标记为“是”和“否”的按钮(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();
}
【解决方案3】:
通常消息框按钮(与所有 Windows 一样)支持当前为 Windows 设置的 UI 语言。因此,如果您安装的是英文并且无法更改语言(MUI 版本或 Vista/7 的 Ultimate),那么您就不走运了。
您可以自己实现一个消息框,但我恳求您不要这样做。当人们开始重新发明方轮时,我最想念的就是按钮的常用热键、使用 Ctrl+Ins 复制内容等简单的东西。