Forums Últimos mensajes - Powered by IBM
 

DesignerSerializationVisibility

22/08/2006 - 19:52 por Ramón | Informe spam
Hola.

Tengo el siguente problema y quisiera ver si alguien puediera ayudarme a
resolverlo.

Cree un control compuesto al cual le agrego un TextBox de un tercero,
este control Textbox tiene una coleccion de botones que expone como
propiedad.

Me interesa exponer ese TextBox para que mis usuarios finales (otros
programadores) puedan cambiar propiedades del TextBox, hago lo siguiente
para que el TextBox contenido dentro de mi control pueda serializarce y
las propiedades que cambien mis usuarios no se pierdan.

<TypeConverter(GetType(ExpandableObjectConverter)),
DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
ReadOnly Property TextBox() As
Infragistics.Win.UltraWinEditors.UltraTextEditor
Get
Return txtText
End Get
End Property


Todo funciona bien hasta este momento, los otros programadores pueden
usar el control sin problemas y las propiedades que modifiquen se quedan
guardadas dentro del codigo del diseñador de windows forms.

Pero me interesa agregarle cierta funcionalidad a ese control, por
ejemplo que con solo cambiar una propiedad de mi control automaticamente
se agregue un boton que permita abrir una caja de dialogo para
seleccionar una carpeta por lo cual hago lo siguiente.


Property OpenFolder() As Boolean
Get
Return m_OpenFolder
End Get
Set(ByVal value As Boolean)
m_OpenFolder = value
If m_OpenFolder And
txtText.ButtonsRight.IndexOf("xOpenDialog") < 0 Then
xButton.Text = "..."
txtText.ButtonsRight.Add(xButton)
AddHandler xButton.Click, AddressOf xOpenFolder
ElseIf Not m_OpenFolder And
txtText.ButtonsRight.IndexOf("xOpenDialog") >= 0 Then

txtText.ButtonsRight.Remove(txtText.ButtonsRight("xOpenDialog"))
End If
End Set
End Property

Bueno, el problema es que al agregar el boton desde la propiedad de mi
control el codigo se serializa y lo agrega al codigo del diseñador de
windows forms, por lo cual en tiempo de ejecucion el boton ya existe y
manda una excepcion.

Yo quisiera saber si existe algun modo de evitar este comportamiento.

Saludos y muchas gracias por la ayuda que puedar proporcionarme.
Ramón Hernández.
 

Leer las respuestas

#1 Ramón
25/08/2006 - 20:35 | Informe spam
Hola.

Bueno, creo que eso no se puede hacer, pero lo que si seguro se puede
hacer es forzar al programador a que ponga la propiedad por codigo y no
con el diseñador, de esa forma el codigo ya no se serializa y funciona y
presenta el boton aunque sea solo en tiempo de ejecucion.

He visto que hay controles que no exponen todas sus propiedades en el
diseñador y hay algunas que solo son visibles por codigo.

Alguien sabra como se puede poner una propiedad que solo sea visible por
codigo y no desdes el diseñador?

Saludos y nuevamente gracias.

Preguntas similares