过去几天我一直在谷歌搜索但没有结果。
我有一个名为MainForm的表单,我在其上放置了四个用户控件。 这些用户控件包含标签和按钮。现在我创建了一个名为Language.cs的文件 在此文件中,我想在我的一个用户控件中按下按钮时更改所有标签的语言。 当我在ucSettings.cs中编码时,我会这样做:
<redeliveryPolicyProfile id="myRedeliveryProfile"
maximumRedeliveries="3"
redeliveryDelay="1000" allowRedeliveryWhileStopping="false"
retryAttemptedLogLevel="INFO" />
但是这不起作用,因为我的Resourcemanager和我的文化信息都在另一个文件中。 所以我有
正如您所看到的,当在ComboBox中选择语言时,我会更改文化信息:
this.label1.Text = res_man.GetString("label_text", cul);
现在我想做点什么:
private void Settings_Language_Cbox_SelectedIndexChanged(object sender, EventArgs e)
{
string SelectedIndex = Settings_Language_Cbox.SelectedItem.ToString();
switch (SelectedIndex)
{
case "English(English)":
ci = CultureInfo.CreateSpecificCulture("en-US");
LanguageSelection = 5;
break;
case "Nederlands(Dutch)":
ci = CultureInfo.CreateSpecificCulture("nl-NL");
LanguageSelection = 6;
break;
}
因此它在Language.cs中调用我的Change方法并将标签更改为正确的语言。但是现在我无法访问Language.cs中的任何标签,即使它们是公开的,我的Language.cs文件也无法从ucSettings.cs获取Resourcemanager和CultureInfo。所以我的问题是,wat是解决这个问题的最佳方法吗?我尝试使用get / set方法,但这根本没有用,现在我不确定是不是因为我弄乱了这个。
编辑:我接近这样做: ucSettings.cs
private void Settings_Save_Btn_Click(object sender, EventArgs e)
{
Language.Change();
}
Language.cs:
private void Settings_Save_Btn_Click(object sender, EventArgs e)
{
Settings_Language_Cbox.SelectedIndex = LanguageSelection;
BusinessClasses.Language language = new BusinessClasses.Language();
language.setLanguage();
}
它仍然提供NullReferenceException,因此它不能正常工作,但到目前为止我最接近。 rs和ci是resourcemanager和cultureinfo
答案 0 :(得分:0)
你的问题不是很明确,你说用户控制器但是意味着什么?用户控制...
由于您是Windows Mobile / Compact Framework的新手,您应该首先从一个简单的项目开始,然后使用小步骤逐渐扩展到您想要的内容。
语言资源本地化的良好开端可能在http://www.codeproject.com/Articles/28234/Survival-guide-to-do-resource-localization-using-C。 使用它,然后使用简单的用户控件等进行扩展。
然后还阅读http://www.codeproject.com/Articles/16091/User-Interface-Localization-with-the-Compact-Frame关于即时更改语言的问题。
如果您需要进一步的帮助,请提供您的想法/需求(我想允许并显示)。