【问题标题】: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,并放置信息文本以及标记为“是”和“否”的按钮(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();
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        通常消息框按钮(与所有 Windows 一样)支持当前为 Windows 设置的 UI 语言。因此,如果您安装的是英文并且无法更改语言(MUI 版本或 Vista/7 的 Ultimate),那么您就不走运了。

        您可以自己实现一个消息框,但我恳求您不要这样做。当人们开始重新发明方轮时,我最想念的就是按钮的常用热键、使用 Ctrl+Ins 复制内容等简单的东西。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-22
            相关资源
            最近更新 更多