在其自己的.cs之外的用户控件中更改labelText

时间:2015-05-13 11:19:02

标签: c# .net user-controls windows-mobile-6.5

过去几天我一直在谷歌搜索但没有结果。

我有一个名为MainForm的表单,我在其上放置了四个用户控件。 这些用户控件包含标签和按钮。现在我创建了一个名为Language.cs的文件 在此文件中,我想在我的一个用户控件中按下按钮时更改所有标签的语言。 当我在ucSettings.cs中编码时,我会这样做:

<redeliveryPolicyProfile id="myRedeliveryProfile"
        maximumRedeliveries="3"
        redeliveryDelay="1000" allowRedeliveryWhileStopping="false"
        retryAttemptedLogLevel="INFO" />

但是这不起作用,因为我的Resourcemanager和我的文化信息都在另一个文件中。 所以我有

  • MainForm包含四个用户控件
  • 调用用户控件,ucAnimalInfo,ucAnimalInput,ucSettings和ucMenuStrip
  • 我在ucSettings中有一个必须更改语言的按钮
  • 文本应在Language.cs
  • 文件中设置

正如您所看到的,当在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

1 个答案:

答案 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关于即时更改语言的问题。

如果您需要进一步的帮助,请提供您的想法/需求(我想允许并显示)。