Я гуглил последние несколько дней, но безрезультатно.
У меня есть форма под названием MainForm, я разместил на ней четыре пользовательских элемента управления. Эти пользовательские элементы управления содержат метки и кнопки. Теперь я создал файл с именем Language.cs. В этом файле я хочу изменить языки для всех меток при нажатии кнопки в одном из моих пользовательских элементов управления. Когда я закодировал это в ucSettings.cs, я бы сделал это так:
this.label1.Text = res_man.GetString("label_text", cul);
Но это не работает, потому что мой Resourcemanager и моя информация о культуре находятся в другом файле. Так что я
- 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();
}
Так что он вызывает мой метод Change в Language.cs и изменяет метки на правильный язык. Но теперь я не могу получить доступ ни к одной из меток в Language.cs, даже если они общедоступны, также мой файл Language.cs не может получить Resourcemanager и CultureInfo из ucSettings.cs. Итак, мой вопрос: как лучше всего справиться с этим? Я пытался использовать метод 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();
}
Язык.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