Может ли оператор switch, который переключает ресурсы, быть более обобщенным c? - PullRequest
2 голосов
/ 25 марта 2020

Я работаю над приложением киоска, в котором есть кнопка для выбора языка.

Кнопка после этого имеет изображение флага языков и его название. Сейчас я использую оператор switch для установки изображения, но мне бы хотелось, чтобы оно было более обобщенным c, поэтому при добавлении языков мне не нужно было бы везде менять код. Я получаю изображение из ресурсов моих приложений, и я бы хотел сохранить его таким.

Единственный способ, которым я могу придумать, - это извлечь изображения из файлов и присвоить им имена в соответствии с языковой строкой, для которой они предназначены. Строка языка в этом формате "en-US". Также языковая строка объявляется в функции до вызова этой.

private void SetLanguageButton()
        {
            switch (language)
            {
                case "en-US":
                    buttonLanguage.Image = Properties.Resources.en_US;
                    break;

                case "hu-HU":
                    buttonLanguage.Image = Properties.Resources.hu_HU;
                    break;

                case "sk-SK":
                    buttonLanguage.Image = Properties.Resources.sk_SK;
                    break;
            }
            buttonLanguage.Text = resourceManager.GetString("languageName", cultureInfo);
        }

1 Ответ

1 голос
/ 25 марта 2020

Если у вас есть культурные ресурсы, вы можете получить данные следующим образом

buttonLanguage.Image = 
    (Icon)Properties.Resources.ResourceManager.GetObject("langicon", cultureInfo);
buttonLanguage.Text = 
    Properties.Resources.ResourceManager.GetString("langname", cultureInfo);
...