Propiedad de un control que es una Hashtable.

03/10/2003 - 21:07 por Jose Antonio | Informe spam
Tengo un control, en el cual una de las propiedades es una Hashtable.
He realizado el diseñador derivado de UITypeEditor, para poder editarla y
añadirle los valores.
El problema que tengo es que cuando le asigno los valores a la Hashtable,
estos no se añaden a el codigo fuente como se añaden las demas propiedades,
o como se añaden las colecciones de un combobox.

¿Hay que programar adicionalmente alguna clase para que ponga estos valores
en la seccion initializecomponent del codigo fuente?.

Saludos y gracias.
José Antonio
 

Leer las respuestas

#1 Alberto Ortiz
04/10/2003 - 20:49 | Informe spam
Hola.
Este es un ejemplo de una clase que serializa los objetos de una propiedad
de colección, quizá te pueda servir con algunos cambios..


<DesignerSerializationVisibility(DesignerSerializationVisibility.Content), _
Category("Appearance")> _
Public Property Buttons() As Buttons
..


<DefaultProperty("Text"), Serializable(), _
TypeConverter(GetType(ToolBarButton.ToolBarButtonConverter)), _
ToolboxItem(False)> _
Public Class ToolBarButton
...

'Para generar codigo para este objeto, debemos implementar un Type Converter
para la clase
'Este codigo está basado en el ejemplo TriangleConverter de MSDN
Friend Class ToolBarButtonConverter
Inherits TypeConverter
'Este metodo sobreescribe a CanConvertTo del TypeConverter. Es llamado
cuando alguien
'quiere convertir una instancia del objeto SimpleObject a otro tipo. Aqui
solo soportamos
'la conversion a InstanceDescriptor
Public Overloads Overrides Function CanConvertTo(ByVal context As
ITypeDescriptorContext, ByVal destinationType As Type) As Boolean
If destinationType Is GetType(InstanceDescriptor) Then
Return True
End If
' Siempre se llama a la funcion base para chequear si la conversion es
posible
Return MyBase.CanConvertTo(context, destinationType)
End Function 'CanConvertTo
'Este es el codigo que hace la conversion de SimpleObjectConverter a
InstanceDescriptor
Public Overloads Overrides Function ConvertTo(ByVal context As
ITypeDescriptorContext, ByVal culture As CultureInfo, ByVal value As Object,
ByVal destinationType As Type) As Object
If destinationType Is GetType(InstanceDescriptor) Then
Dim cInfo As ConstructorInfo GetType(ToolBarButton).GetConstructor(System.Type.EmptyTypes)
Dim t As ToolBarButton = CType(value, ToolBarButton)
Return New InstanceDescriptor(cInfo, Nothing, False)
End If
'Llamar siempre a la funcion base, fuera de la condicion
Return MyBase.ConvertTo(context, culture, value, destinationType)
End Function
End Class


End Class




aoe(arroba)euskalnet.net
www.euskalnet.net/aoe



"Jose Antonio" escribió en el mensaje
news:
Tengo un control, en el cual una de las propiedades es una Hashtable.
He realizado el diseñador derivado de UITypeEditor, para poder editarla y
añadirle los valores.
El problema que tengo es que cuando le asigno los valores a la Hashtable,
estos no se añaden a el codigo fuente como se añaden las demas


propiedades,
o como se añaden las colecciones de un combobox.

¿Hay que programar adicionalmente alguna clase para que ponga estos


valores
en la seccion initializecomponent del codigo fuente?.

Saludos y gracias.
José Antonio


Preguntas similares