variable valor example español enum asignar c# enums listbox .net-1.1

c# - example - ¿Cómo puedo asignar el valor seleccionado en un listbox a un enum var?



enum definition c# (2)

Con Enum.Parse podrías convertir de una cadena a un Enum.

PrintUtils.printerChoice = (PrintUtils.BeltPrinterType)Enum.Parse(typeof(PrintUtils.BeltPrinterType),listBoxeltPrinters.SelectedItem);

También hay un método Enum.TryParse que devuelve un bool que indica si el análisis se ha realizado correctamente.

Quiero evitar la kludginess de:

private void listBoxBeltPrinters_SelectedIndexChanged(object sender, System.EventArgs e) { string sel = string listBoxBeltPrinters.SelectedItem.ToString(); if (sel == "Zebra QL220") { PrintUtils.printerChoice = PrintUtils.BeltPrinterType.ZebraQL220; } else if (sel == "ONiel") { PrintUtils.printerChoice = PrintUtils.BeltPrinterType.ONiel; } else if ( . . .) }

¿Hay alguna forma en que pueda asignar de manera más elegante o elocuente a una enumeración basada en una selección de cuadro de lista, algo así como:

PrintUtils.printerChoice = listBoxBeltPrinters.SelectedItem.ToEnum(PrintUtils.BeltPrinterType)?

?


Podrías probar algo como esto

Array values = Enum.GetValues(typeof(BeltPrinterType));//If this doesn''t help in compact framework try below code Array values = GetBeltPrinterTypes();//this should work, rest all same foreach (var item in values) { listbox.Items.Add(item); } private static BeltPrinterType[] GetBeltPrinterTypes() { FieldInfo[] fi = typeof(BeltPrinterType).GetFields(BindingFlags.Static | BindingFlags.Public); BeltPrinterType[] values = new BeltPrinterType[fi.Length]; for (int i = 0; i < fi.Length; i++) { values[i] = (BeltPrinterType)fi[i].GetValue(null); } return values; } private void listBoxBeltPrinters_SelectedIndexChanged(object sender, System.EventArgs e) { if(!(listBoxBeltPrinters.SelectedItem is BeltPrinterType)) { return; } PrintUtils.printerChoice = (BeltPrinterType)listBoxBeltPrinters.SelectedItem; }