Pregunta

Tengo un objeto de colección que implementa IList. Dentro de la colección, he usado una Lista para recolectar los artículos. Dentro de PropertyGrid (en tiempo de ejecución), se une correctamente y se abre el Editor de colecciones. Puedo editar, agregar elementos correctamente y detectar estos métodos cuando se usan en la clase de colección.

Sin embargo, si intenta eliminar algún elemento, se eliminarán de la colección, pero aparentemente IList.Remove o IList.RemoveAt aparentemente no se usan de mi colección. Los elementos eliminados también deben eliminarse de una base de datos, comportamiento que implemento en los métodos Eliminar.

¡También eliminé toda la lógica de los métodos de eliminación y los dejé con el nuevo NotImplmented (), y estos no se dispararon en absoluto!

También tengo un CollectionEditor implementado por mí mismo, pero aún no puedo ver una manera de conectarme a mis objetos.

Entonces, ¿dónde debería buscar los métodos relevantes? ¿Necesito cambiar también el comportamiento de mis artículos?

¿Fue útil?

Solución

El Editor de colecciones no utiliza Eliminar o RemoveAt . En cambio, cuando el usuario presiona el botón Aceptar, llama al método IList.Clear y luego llama a IList.Add para agregar todos los elementos que contendrá la colección. No es que funcione con la versión no genérica de IList .

Otros consejos

Bueno, ¡ratas!

Dentro de mi Editor de colecciones, ¿hay alguna forma de obtener la colección real? Creo que obtendré la colección, y luego la compararé una vez que se haya presionado OK, y elimine los registros desde allí.

en su defecto, desempolva el protector de pantalla de matriz, desenterra un buen libro y dile a todos que está compilando.

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