Инициализация 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; } }