如何在运行时更改 WinForms 应用程序的区域性
我用 C# 创建了 Windows 窗体程序。我在本地化方面遇到一些问题。我有两种语言的资源文件(一种是英语,另一种是法语)。我想单击每个语言按钮并在运行时更改语言。
但是当我点击按钮时,它不起作用。我正在使用这个代码。
private void btnfrench_Click(object sender, EventArgs e)
{
getlanguage("fr-FR");
}
private void getlanguage(string lan)
{
foreach (Control c in this.Controls)
{
ComponentResourceManager cmp =
new ComponentResourceManager(typeof(BanksForm));
cmp.ApplyResources(c, c.Name, new CultureInfo(lan));
}
}
请帮忙解决这个问题吗……
非常感谢……
I have created Windows Form Program in C#. I have some problems with localization. I have resource files in 2 languages(one is for english and another is for french). I want to click each language button and change language at runtime.
But when i am clicking on button, it doesn't work. i am using this code.
private void btnfrench_Click(object sender, EventArgs e)
{
getlanguage("fr-FR");
}
private void getlanguage(string lan)
{
foreach (Control c in this.Controls)
{
ComponentResourceManager cmp =
new ComponentResourceManager(typeof(BanksForm));
cmp.ApplyResources(c, c.Name, new CultureInfo(lan));
}
}
would any pls help on this......
Many Thanks....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这很有效:
小心避免添加这样没人会使用的口哨。它充其量只是一个演示功能,实际上用户不会即时更改其母语。
This worked:
Be careful to avoid adding whistles like this that nobody will ever use. It at best is a demo feature, in practice users don't change their native language on-the-fly.
您可能必须在控件上递归调用ApplyResources:
You might have to call ApplyResources recursively on the controls:
在运行时更新 CultureInfo 可能会重置组件大小。此代码保留控件的大小和位置
(不过仍然会有可见的闪烁,使用 SuspendLayout() 无法修复)
Updating the CultureInfo at runtime might reset component size. This code preserves the size and position of the controls
(there will still be visible flickering though, which using SuspendLayout() couldn't fix)