Pregunta

tiene este problema, he creado mi propia DataGridViewColumn y me gustaría añadir algunas propiedades que se pueden cambiar en tiempo de diseño de edición ... aquí está mi código:

private int nMaxLength;
[Description("Fondoscala valore"), Category("Sea")]
public int MaxLength
{
    get { return nMaxLength; }
    set { nMaxLength = value; }
}

y de hecho está bien, cuando se abre el editor de columnas, que vea esta propiedad en la categoría Mar y se puede cambiar, pero cuando la ha cambiado, si vas al archivo .Designer.cs, se ve la MaxLength valor a 0 .. ningún cambio ... ¿¿Cuál es el problema?? gracias de antemano

¿Fue útil?

Solución

El Diseñador de formularios hace algún truco interna con el fin de permitirle cambiar el tipo de columna (por ejemplo, de DataGridViewTextBoxColumn a DataGridViewButtonColumn) en tiempo de diseño. Como resultado de esto, el diseñador se basa en la subclase de DataGridViewColumn tener un método Clone() implementado correctamente-, es decir:

public override object Clone() {
    MyDataGridViewColumn that = (MyDataGridViewColumn)base.Clone();
    that.MaxLength = this.MaxLength;
    return that;
}

Si no reemplaza el método Clone(), el diseñador no cometer cualquier cambio que realice en los valores de propiedad personalizados.

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