Visual Basic.NET - Código Custom Control "mal" generado por el Designer

 
Vista:

Código Custom Control "mal" generado por el Designer

Publicado por Jorge Luis Sala (3 intervenciones) el 27/12/2011 16:22:15
Hola qué tal, les comento mi inconveniente. Estoy creando un Control personalizado que es algo así:

Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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


Acá el código de "MiColeccion"

Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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


Y por último el código de "MiObjeto"

Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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:
1
2
MiObjeto1.Nombre = "Uno"
MiControl1.Collecion.Add(MiObjeto1)


Lo hace de esta manera generando un error de sintaxis:


Código:
1
2
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!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder