Инициализация ComboBox из перечисления в C#

Часто полезно инициализировать ComboBox из перечисления, чтобы пользователь мог выбрать одно из значений перечисления. Вы можете ввести значение в ComboBox во время разработки, но затем, если перечисление изменится, вам придется не забудьте обновить значения. Лучшей альтернативой является инициализация ComboBox в коде.

Следующий код показывает, как этот пример делает это.

// Список типов пользователей.
private enum UserTypes
{
    SalesAndShippingClerk,
    ShiftSupervisor,
    StoreManager
}

// Инициализировать ComboBox cboUserType.
private void Form1_Load(object sender, EventArgs e)
{
    foreach (string user_type in Enum.GetNames(typeof(UserTypes)))
    {
        cboUserType.Items.Add(user_type.ToProperCase());
    }
}

Этот код сначала определяет перечисление UserTypes.

Когда программа запускается, она использует метод Enum.GetNames, чтобы получить список значений перечисления. Для каждого элемента код вызывает метод расширения строки ToProperCase, описанный в примере Преобразование между случаем Паскаля, верблюжьим футляром и правильным случаем в C# , чтобы преобразовать значения перечислимого значения Pascal в соответствующие строки case. Например, это конвертирует SalesAndShippingClerk в Sales and Shipping Clerk.

Когда пользователь выбирает запись ComboBox, следующий код преобразует выделение в значение UserTypes, а затем отображает строку, показывающую, что она правильно выполнила преобразование.

// Получить выбранный тип пользователя.
private void cboUserType_SelectedIndexChanged(
    object sender, EventArgs e)
{
    // Преобразуем текст ComboBox в имя обложки Pascal.
    string type_name = cboUserType.Text.ToPascalCase();

    // Преобразуем имя в значение UserTypes.
    UserTypes user_type =
        (UserTypes)Enum.Parse(typeof(UserTypes), type_name);

    // Докажите, что это сработало.
    switch (user_type)
    {
        case UserTypes.SalesAndShippingClerk:
            lblSelectedType.Text =
                "You selected sales && shipping clerk.";
            break;
        case UserTypes.ShiftSupervisor:
            lblSelectedType.Text =
                "You selected shift supervisor.";
            break;
        case UserTypes.StoreManager:
            lblSelectedType.Text =
                "You selected store manager.";
            break;
    }
}

Источник: http://csharphelper.com/blog/2014/10/initialize-a-combobox-from-an-enumeration-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector