Serializacion de las propiedades del un componente con Interfaz System.ComponentModel.IExtenderProvider

28/09/2005 - 18:26 por Alvaro E. Gonzalez V. | Informe spam
Hola a todos

Tengo un componente que hereda la interfaz System.ComponentModel.IExtenderProvider, pero las
propiedades implementadas por este las incluye en la serializacion de cada componente o control
"extendido", yo necesito que estas propiedades sean incliudas al final de todo las instrucciones de
inizialzación.

¿Alguien me puede brindar ayuda para lograrlo?

Saludos
Alvaro

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
28/09/2005 - 19:53 | Informe spam
Dudo que se pueda pero puedes implementar la interface ISupportInitialize en
el componente y recien ejecutar el codigo que tengas en el seteo de
propiedades al llamarse a EndInit, que siempre se llama al final de la
inicializacion del formulario.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
#2 Alvaro E. Gonzalez V.
29/09/2005 - 02:24 | Informe spam
Gracias Eduardo;

tienes un ejemplo sencillo de como seria la implentación...?

Saludos
Alvaro


Eduardo A. Morcillo [MS MVP VB] wrote:
Mostrar la cita
#3 Eduardo A. Morcillo [MS MVP VB]
29/09/2005 - 04:59 | Informe spam
Aqui va:
[ProvideProperty("MiPropiedad", typeof(Control))]
public class MiExtender : Component, IExtenderProvider, ISupportInitialize
{

public MiExtender() {
}

public void BeginInit() {
_onInit = true;
}

public bool CanExtend(object extendee) {
return extendee is Control;
}

public void EndInit() {

_onInit = false;

// Ejecuto el proceso con todos los controles
foreach(Control ctrl in _props.Keys) {
HacerAlgo(ctrl, _props[ctrl]);
}

}

public string GetMiPropiedad(Control control) {

return (string) _props[control];

}

public void SetMiPropiedad(Control control, string valor) {

_props.Add(control, valor);

// si no estoy dentro de BeginInit/EndInit
// ejecuto el proceso que quiero hacer
// con el control
if (!_onInit)
HacerAlgo(control, valor);

}

private void HacerAlgo(Control control, string valor) {
// Aqui hago lo que necesite con el control
}

private bool _onInit;
private Hashtable _props = new Hashtable();

}

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C
#4 Alvaro E. Gonzalez V.
30/09/2005 - 02:35 | Informe spam
Gracias Eduardo,

Eduardo A. Morcillo [MS MVP VB] wrote:
Mostrar la cita
Ads by Google
Search Busqueda sugerida