Pregunta

Quiero ser capaz de mostrar en un PropertyGrid una lista desplegable que muestra algo de valor "cadena", pero devolver un valor "int".

Por ejemplo, deje actuar Tengo esta clase:

public class MyObjectOptions : StringConverter
{
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
        return true;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
        MyObjectCollection mm = new MyObjectCollection();

        List<String> names = new List<String>
        foreach (MyObject m in mm)
        {
            m.Id // Need to store this somewhere ...
            names.Add(m.Name);
        }

        return new StandardValuesCollection(name);
    }

    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
    {
        return true;
    }
}

Aquí está mi uso en el control de la clase PropertyGrid

public class MyObjectProperty
{
    [TypeConverter(typeof(MyObjectOptions))]
    public int Id
    {
        get { return this.id; }
        set { this.id = value; }
    }
}

Como se puede ver, quiero almacenar el identificador del objeto, pero quiero mostrar su nombre en la lista desplegable ... Intento usar una tabla hash, pero es que no funciona ...

Por cierto - Yo uso la versión 3.5 de .Net, pero yo sólo uso WinForm (no WPF)

.
¿Fue útil?

Solución

No se puede utilizar para que GetStandardValues. Este método sería útil si tiene que restringir sus valores enteros a, digamos 1, 5 y 10.

Si desea mostrar las cadenas de valor de su propiedad, sólo tiene que reemplazar los métodos ConvertTo y ConvertFrom de su TypeConverter. El PropertyGrid utilizará las cadenas convertidas en la lista desplegable.

Acerca de su tabla hash, se puede almacenar en su TypeConverter si su contenido es estático. Si es dinámico, lo mejor es dejar que la instancia de destino de la red de manejarlo. A partir de su convertidor, usted será capaz de acceder a él a través de la propiedad TypeDescriptorContext.Instance.

Espero que ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top