Использование Enum вместе с ComboBox C#

Доброго времени форумчане. У меня есть такой вопрос. Итак, допустим, у меня есть ComboBox на форме, в котором перечислены страны, рядом с ним находится PictureBox для изображения флага каждой из стран. В Enum я могу поместить для каждого индекса ComboBox путь к изображению через ресурсы. Как сделать так, чтобы при выборе нужного индекса подставлялось изображение, если использовать if код получится слишком грязный, громоздкий. Спасибо

На данный момент попробовал такой вариант. Параметром передается индекс выбранного айтема в ComboBox

public static Image GetFlatСountry(int index)
    {
        switch (index)
        {
            case 0:
                {
                    return Properties.Resources.russia;
                }
            case 1:
                {
                    return Properties.Resources.united_states;
                }
            case 2:
                {
                    return Properties.Resources.ukraine;
                }
            case 3:
                {
                    return Properties.Resources.poland;
                }
            case 4:
                {
                    return Properties.Resources.romania;
                }
            default:
                {
                    return Properties.Resources.error;
                }
        }
    }

Применение

iconCountry.Image = GetFlatСountry(listCountry.SelectedIndex);

Ответы (1 шт):

Автор решения: aepot

switch здесь выглядит нормально. При использовании .NET Core и новее, ваш код можно записать так

public static Image GetFlatСountry(int index) => index switch
{
    0 => Properties.Resources.russia,
    1 => Properties.Resources.united_states,
    2 => Properties.Resources.ukraine,
    3 => Properties.Resources.poland,
    4 => Properties.Resources.romania,
    _ => Properties.Resources.error
};
Image image = GetFlatСountry(0);

А вообще можно еще создать словарь

private static readonly Dictionary<int, Image> FlatСountries = new Dictionary<int, Image>
{
    [0] = Properties.Resources.russia,
    [1] = Properties.Resources.united_states,
    [2] = Properties.Resources.ukraine,
    [3] = Properties.Resources.poland,
    [4] = Properties.Resources.romania
}

public static Image GetFlatСountry(int index)
    => FlatСountries.TryGetValue(index, out Image image) ? image : Properties.Resources.error;

Но первый вариант мне кажется уместнее, так как не требует дополнительной памяти для хранения словаря.

→ Ссылка