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:
Acá el código de "MiColeccion"
Código:
Y por último el código de "MiObjeto"
Código:
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:
Código:
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!
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


0