Una de las cosas que menos me gustan cuando he desarrollado aplicaciones son los cambios en cadenas de texto, sobre todo en los ComboBox y demas objetos similares, lo tipico del: «En vez de que ponga Izquierda que ponga Izda», entonces habia que buscar todos y hacer cambios, si es poco usado va rapido pero si se usa mucho mas tiempo…
Se que mucha de esta funcionalidad se puede resolver con controles heredados, pero no es el fondo del asunto, supongamos que …
Cargar estos valores fijos en un combo a la antigua usanza tendriamos que hacer:
Combo.Items.add(«Izquieda»)
Combo.Items.add(«Derecha»)
Combo.Items.add(«Ambas»)
Pero porque no usar otro metodo:
Creamos un enumerador:
public enum Mano
{Izquierda,Dercha,Ambas}
Usamos su nombre como cadenas, ademas es constante en todo el programa y ademas es facil hacer refactoring?
foreach (Mano item in Enum.GetValues(typeof(Mano))){Combo.Items.add(item.ToString());}
Con el enumerador podemos hacer comparaciones con los datos (poniendo el ToString() al campo del enumerador):
if (Combo.Text == Mano.Izquierda.ToString()) {//Operaciones}
Con refactoring podemos cambiar en todo el programa Izquierda por Izda, y solventarlo rapidamente.
Para los que os pregunteis, ya y como hago yo para hacerlo con frases en vez de palabras: «Mano izquierda», pues bien lo mismo pero con un «truquito»
public enum Mano
{Mano_Izquierda,Mano_Dercha,Ambas}
Al cargar simplemente hacemos un replace:
foreach (Mano item in Enum.GetValues(typeof(Mano))){Combo.Items.add(item.ToString().Replace(«_», » «));}
Y claro siempre que queramos usar el enumerador hay que poner el replace..
El fondo del asunto es el de acceder a una forma facil al enumerador para poder usarlo de «otra forma».
Espero que os sea de utilidad….