簡體   English   中英

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

[英]Change labelText in user control outside its own .cs

最近幾天一直在搜尋Google,但沒有結果。

我有一個名為MainForm的窗體,我在上面放置了四個用戶控件。 這些用戶控件包含標簽和按鈕。 現在,我創建了一個名為Language.cs的文件。在此文件中,當我在一個用戶控件中按下按鈕時,我想更改所有標簽的語言。 當我在ucSettings.cs中對此進行編碼時,我會這樣做:

this.label1.Text = res_man.GetString("label_text", cul);

但這不起作用,因為我的Resourcemanager和我的Culture信息都在另一個文件中。 所以我有

  • MainForm包含四個用戶控件
  • 用戶控件名為ucAnimalInfo,ucAnimalInput,ucSettings和ucMenuStrip
  • 我在ucSettings中有一個必須更改語言的按鈕
  • 文本應在Language.cs文件中設置

如您所見,在ComboBox中選擇一種語言后,我會更改文化信息:

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

現在我想做類似的事情:

private void Settings_Save_Btn_Click(object sender, EventArgs e)
    {
       Language.Change();     
    }

這樣它將在Language.cs中調用我的Change方法,並將標簽更改為正確的語言。 但是現在即使我已經公開,我也無法訪問Language.cs中的任何標簽,我的Language.cs文件也無法從ucSettings.cs中獲取Resourcemanager和CultureInfo。 所以我的問題是,w是處理此問題的最佳方法? 我嘗試使用get / set方法,但這根本沒有解決,現在我不確定是否是因為我搞砸了。

編輯:我這樣做像ucSettings.cs

private void Settings_Save_Btn_Click(object sender, EventArgs e)
    {
        Settings_Language_Cbox.SelectedIndex = LanguageSelection;
        BusinessClasses.Language language = new BusinessClasses.Language();
        language.setLanguage();
    }

Language.cs:

    public class Language
{
    public MainForm mainform;
    public ucAnimalInfo animalinfo;
    public ucAnimalInput animalinput;
    public ucSettings settings;


    public void setLanguage()
    {
        mainform.Animal_Info_Tab.Info_Id_Text.Text = mainform.Settings_Tab.rs.GetString("Info_Save_Btn", mainform.Settings_Tab.ci);

    }

它仍然給出NullReferenceException,所以它不是真的工作,但到目前為止我得到的最接近。 rs和ci是資源管理器和cultureinfo

您的問題不是很清楚,您說的是用戶控制器,而是什么意思? 用戶控制...

當您不熟悉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有關“即時”更改語言的信息。

如果您需要進一步的幫助,請僅提供您的想法/需求(我想允許並證明這一點)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM