开发环境:.NET Framerwork 4.7.2 如果按照本教程仍没有实现功能 请查看是否为版本原因
1.创建一个windowsform窗体应用,拖两个按钮上去修改文本为中文
2.鼠标左键单击窗体,然后在右下角的属性栏中找到Localizable 修改为True
3.在Language中选择或者输入另一种语言,本教程选用的是English
4.进入之后发现和之前的窗体是一样的,这时候我们修改控件的文本为英文
5.在右边的工程目录下会生成一个新的.resx后缀的文件用于保存这个语言版本下的控件信息
6.现在给按钮的点击事件配置处理代码,以下为英文版本切换中文,中文切换英文只需将“zh-CN”修改为“en-US”(代码的文本形式在下边)
代码解释
1.前两句是修改文化以及加载资源,这里需要注意的是ResourCeManger构造器中的参数typeof() 括号中的参数对应的是文件目录
2.第三行以下的代码是修改文本,解释一下Getstring函数的参数,下图是From.en.resx文件,可以明显看出参数就是这个目录下的Name,而返回值就是对应的Value,所以也可以采用挨个赋值的方法改变文本,如下图
注意
1.想要添加控件或者修改控件位置、大小等信息,均需要将语言修改回默认再进行操作,举例来说,在English版本下移动了button的位置,在默认版本下button的位置是不会变的,而且由于English版本的控件均依赖原版本生成,此情况下再在原版本中进行修改可能会导致English版本中的控件位置发生不可描述的变化…这点大家可以试试…
2.如果想将当前配置保存下来,举例来说,在界面内设置了英文版本,希望下次打开还是英文版本,这里需要在Properties->Setting.settings中添加一个语言变量,每次在窗体内修改语言都会修改这个变量,并且在窗体加载的事件中添加代码,在加载窗体时将当前线程语言设置为这个语言变量所对应的语言…这个功能我后续会更新
3.把整个vs的截图给大家,便于查找我说的位置
代码
// 修改当前线程的语言
Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CN");
// 加载资源
ResourceManager rm = new ResourceManager(typeof(Form1));
// 遍历控件重新赋值文本
foreach (Control ctl in Controls)
{
ctl.Text = rm.GetString(ctl.Name + ".Text");
}
// 窗体的文本赋值
this.Text = rm.GetString("$this.Text");
以上