Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MessageBox按钮-设置语言?_C#_.net_Localization_Messagebox - Fatal编程技术网

C# MessageBox按钮-设置语言?

C# MessageBox按钮-设置语言?,c#,.net,localization,messagebox,C#,.net,Localization,Messagebox,使用MessageBox.Show()时,您可以从中进行选择。可用的按钮是枚举,并提供“是否”、“确定取消”等选项 例如,当我使用挪威语短信时,用户仍然会收到英文“Yes No” 有没有办法更改按钮的文本(C#)以确保语言正确?我是否可以覆盖文本,或者以某种方式设置当前区域设置,以便我可以使用“Ja-Nei”而不是“Yes-No” 我不想依赖于在我的客户端安装.NET语言包。在.NET中对此没有本机支持(就我所知,无论如何;如果我错了,请纠正我,任何人)。我确实遇到过这篇CodeProject文

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

例如,当我使用挪威语短信时,用户仍然会收到英文“Yes No”

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


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

在.NET中对此没有本机支持(就我所知,无论如何;如果我错了,请纠正我,任何人)。我确实遇到过这篇CodeProject文章,它似乎通过一些消息挂钩和P/Invoke实现了这个技巧:
我认为这是不可能的,但请参阅MSDN文章。你可能会有一些想法。您可以更改消息框中的文本。创建自己的消息框(新表单)并显示它们怎么样?

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

您可以自己实现messagebox,但我恳请您不要这样做。当人们开始重新发明方轮时,我最怀念的是按钮的普通热键、能够使用Ctrl+Ins复制内容等简单功能。

您可以创建一个面板(
pnlExitMode
),其中包含属性
Visible=false
,并放置信息文本和按钮(
btnYes
btnNo
)标记为是和否(带有“您的”语言的按钮标题)到该面板上,然后将所需的是/否-操作放入按钮事件处理例程中。 在决策时(在我的情况下:如果关闭应用程序时
ini
文件尚未写入,则发出警告),将面板设置为
可见
。带有按钮的面板将弹出

示例代码:

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();
}