Código:
Acá el código de "MiColeccion"Public Class MiControl Private MiColeccion_Value as new MiColeccion Public Property Coleccion() as MiColeccion Get Return Me.MiColeccion_Value End Get Set (ByVal value as MiColeccion) Me.MiColeccion_Value = value End Set End Property End Class
Código:
Y por último el código de "MiObjeto"Public Class MiColeccion Inherits CollectionBase Public Sub Add(ByVal Objeto As MiObjeto) Dim Index As Integer = Me.InnerList.Add(Objeto) End Sub Default Public Property Item(ByVal Index As Integer) As MiObjeto Get Return CType(Me.InnerList(Index), MiObjeto) End Get Set(ByVal value As MiObjeto) InnerList(Index) = value End Set End Property End Class
Código:
Public Class MiObjeto Private Nombre_Value as String Public Property Nombre() as String Get Return Me.Nombre_Value End Get Set (ByVal value as String) Me.Nombre_Value = value End Set End Property End Class
Bueno hasta ahí todo perfecto funciona 10 puntos a nivel de código. El problema está cuando inserto "MiControl" en un formulario en el diseñador de .net
Como corresponde aparece entre sus propiedades "Coleccion" y puedo ingresar para agregarle elementos (de tipo MiObjeto). Me abre el cuadro para editar la colección me deja agregarle objetos incluso modificar la propiedad "Nombre" de los objetos.
El problema está que al compilar me muestra que el en archivo del diseñador (Por ej Form1.Designer.vb) me escribe mal el código que debería insertar objetos en la colección.
En lugar de hacerlo como corresponde:
Código:
Lo hace de esta manera generando un error de sintaxis:MiObjeto1.Nombre = "Uno" MiControl1.Collecion.Add(MiObjeto1)
Código:
MiObjeto1.Nombre = "Uno" New MiColeccion.Add(MiObjeto1)
La verdad que es muy curioso lo que pasa y no tengo idea de si estoy cometiendo un error. Probé varias veces en proyectos nuevos y limpios pero nada. El control que estoy diseñando pretende ser mucho más complejo y la idea es de que pueda acceder desde el diseñador para ahorrarme mucho trabajo en el futuro por eso la insistencia.
Agradezco su cooperación y tiempo. Saludos!