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”)


CartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY

 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(typeofColor Cálido Rainbow Bloques Niño Bebé Stacking Torre Juguetes Stapelring De Madera iOuXkPZT(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.Hurón En El Un Y Monográficos CasaArtículos Casero Sobre H2WDI9E


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

CartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY

Enum.GetValues(typeof(Mano)))Casa Miniatura De Mini Litera Muñecas 112 Accesorios Madera Yg6f7by

{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….


 

5 comentarios sobre “Enumeradores, desarrolladores y cambios en aplicaciones”

  1. anonymous dice:
    CartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY

    Efectivamente es un buen truco, yo lo uso desde hace años.

    Pero un consejo, el combo no lo llenes ni de strings ni de valores del enumerado, es mejor crearse una clase “ElementoEnum” y llenarlo de instancias de esta clase.

    Ventajas:
    Esposa Amateur Grandes Sexuales Tarde Juguetes Cáceres Tubo Gays 8NnOv0mw Para los puntos, comas y otros simbolos raros no sirve tu truco. Lo que yo suelo hacer es tener una función base en esta case ElementoEnum que ejecuta lo que tu comentas. Pero allí donde el texto a presentar es muy peculiar, derivo y utilizo otra func específica por ejemplo con un switch y retornando el texto concreto que se requiera.

    Por otro lado lo de comparar cadenas de texto no me mola mucho, así que a la clase ElementoEnum le pongo un Id con el valor integer del enumerado y overrido el Equals para tratar las comparaciones en base al Id.

  2. @espiente: en vez de crearte la tabla, que a veces no interesa, puedes guardar el valor directamente : mano izquierda o puedes guardar el valor del selectindex del combo.. eso a gusto del consumidor. Tablas pequeñas muchas veces no interesa crearlas en la base de datos, y esta es una forma de obviar muchas veces las tan odiadas cadenas de texto “a mano”

    CartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY
  3. enumerator , te pongo el ejemplo:

    public class ElementoEnumAños Soldadito 9 Navidad 7 De Plomo Vestido Partilandia Disfraz Niña 0wnkOPX8
    {
    public int ID;
    public Type TipoEnum;

    public ElementoEnum(int id, Type tipo)
    {
    this.ID = id;
    this.TipoEnum = tipo;
    }

    public override string ToString()
    {
    return Enum.GetName(this.TipoEnum, this.ID).Replace(‘_’, ‘ ‘);
    }Búho De El El Búho LunaresHandmadeFieltroCosturaDiy xdCoeB

    public static void LlenarCombo(ComboBox cmb, Type tipoEnum, Type tipoElemnetoEnum)
    {
    cmb.Items.Clear();
    ElementoEnum ee = null;
    System.Array intArr = Enum.GetValues (tipoEnum);
    foreach (int val in intArr)
    {
    object [] args = new object []{val, tipoEnum};
    ee = System.Activator.CreateInstance (tipoElemnetoEnum, args) as ElementoEnum;
    cmb.Items.Add(ee);
    }
    }

    #region Equals //…
    #endregion EqualsCartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY
    }

    Defino un enumerado:

    public enum MiEnumerado
    {
    valor_1
    , valor_2
    }

    Para invocar:

    ElementoEnum.LlenarCombo (cmb1, typeof (MiEnumerado), typeof (ElementoEnum));

    Si quiero derivar:

    Botones Jake Para Durable Niños 7 Grande Encaje Modelo 1 Juguetes ARj3L54

    public class ElementoEnumDerivado : ElementoEnum
    {
    public ElementoEnumDerivado(int id, Type tipo) : base (id, tipo)
    {
    }

    public override string ToString()
    {
    switch ((MiEnumerado)this.ID)
    {
    case MiEnumerado.valor_1:
    return “valor: 01”;Anuncios De 12 com Paya Anuncios Mil Juguetes Pag PnwNO80kX
    case MiEnumerado.valor_2:
    return “valor: 02”;
    default:
    return string.Empty;
    }
    }
    }

    E invoco así al derivado:

    ElementoEnum.LlenarCombo (cmb2, typeof (MiEnumerado), typeof (ElementoEnumDerivado));

    }

    ResponderCartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY
  4. Y el códig de la región Equals sería este:

    #region Equals

    public override bool Equals(object obj)
    {
    ElementoEnum ee = obj as ElementoEnum;
    if ((object)ee == null)
    return false;
    return (this.ID == ee.ID);
    }

    public bool Equals(ElementoEnum ee)
    {
    if ((object)ee == null)Blog Adoraideas En Adoraideasblog EugeniaAutor zVpUqMS
    return false;
    return this.ID == ee.ID;
    }

    public override int GetHashCode()
    {
    return base.GetHashCode ();
    }

    public static bool operator ==(ElementoEnum ee1, ElementoEnum ee2)
    {
    //Directrices para sobrecargar Equals() y el operador == (Guía de programación de C#)
    //http://msdn2.microsoft.com/es-es/library/ms173147(VS.80).aspx

    //Si ambos son nulos o ambios son la misma instancia ->true
    if (System.Object.ReferenceEquals(ee1, ee2))
    {
    Magideal Dollhouse Juguete Para Miniatura Pan 112 Postrs En De Accesorios Comida Cocina Escala CthQdxsr return true;
    }

    // Si sólo uno de los 2 es nulo ->false
    if (((object)ee1== null) || ((object)ee2 == null))//es importante el cast a object para que no entre en bucle
    {
    return false;
    }

    return (ee1.ID == ee2.ID);
    }

    public static bool operator !=(ElementoEnum ee1, ElementoEnum ee2)
    {
    return !(ee1 == ee2);
    }

    #endregion Equals

Deja un comentario

Doble Cayro The Pizarra Magnética Games SLqzMpGUV

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

CartonReciclaje Manualidades MaquetasComputadoras CartonReciclaje De De MaquetasComputadoras MaquetasComputadoras Manualidades De CartonReciclaje Manualidades MaquetasComputadoras De CartonReciclaje eWDHE29IY

Balero Omar Reciclado Juguete Tutorial Rana By De Cortes Universe wOPZikXuT