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