OVH Cloud OVH Cloud

prob de sérialisation de controls enfants

3 réponses
Avatar
Magalie
Salut,

J'ai un Control (qui a un ControlDesigner) et qui contient d'autres
Controles.
Via un Verb, je modifie des propriétés de mon Control et de ses enfants.
Pour valider la modification, j'apelle la méthode "RaiseComponentChanged"
mais les propriétés des enfants ne sont pas sérializé et la méthode
"RaiseComponentChanged" est protected.

comment puis-je faire ???

Merci.

3 réponses

Avatar
Magalie
c'est bon j'ai trouvé :-))))))


"Magalie" a écrit dans le message de news:

Salut,

J'ai un Control (qui a un ControlDesigner) et qui contient d'autres
Controles.
Via un Verb, je modifie des propriétés de mon Control et de ses enfants.
Pour valider la modification, j'apelle la méthode "RaiseComponentChanged"
mais les propriétés des enfants ne sont pas sérializé et la méthode
"RaiseComponentChanged" est protected.

comment puis-je faire ???

Merci.



Avatar
Zoury
Salut Magalie ! :O)

Peux-tu nous dire comment ?
Ainsi si quelqu'un rencontre ce problème il pourra fouiller les archives et
trouver ton message. ;O)

--
Cordialement
Yanick
MVP pour Visual Basic
"Magalie" a écrit dans le message de
news:
c'est bon j'ai trouvé :-))))))


"Magalie" a écrit dans le message de news:

> Salut,
>
> J'ai un Control (qui a un ControlDesigner) et qui contient d'autres
> Controles.
> Via un Verb, je modifie des propriétés de mon Control et de ses enfants.
> Pour valider la modification, j'apelle la méthode


"RaiseComponentChanged"
> mais les propriétés des enfants ne sont pas sérializé et la méthode
> "RaiseComponentChanged" est protected.
>
> comment puis-je faire ???
>
> Merci.
>




Avatar
Magalie
voila comment j'ai fait pour modifier la valeur d'une propriété d'un
contrôle enfant par un Verb:
dans une classe héritant d'un ContainerControlDesigner (pour
ControlDesigner faut voir si c'est possible j'ai pas essayer)

J'ai commencer par "overrider" la propriété Verbs :



public override DesignerVerbCollection Verbs

{

get

{

DesignerVerbCollection collection = new DesignerVerbCollection();

collection.Add( new DesignerVerb("Etendre la police a l'ensemble
des composants du panel", new EventHandler(this. ExtendPolice)));



return collection;

}

}



Ensuite j'ai créé la méthode «ExtendPolice» :

Je récupère la valeur que je souhaite affecter partout :



Control panel = (Control)this.ParentComponent.Site.Container.Components[1];

Color c =
(Color)panel.GetType().GetProperty("GeneraleFontColor").GetValue(panel,
null);



Je récupère la liste des propriétés d'un des contrôles enfants (je répète l'opération
pour tout ceux dont je veut affecter la valeur) :



Control cont = (Control)this.ParentComponent.Site.Container.Components[i];

PropertyDescriptorCollection properties =
TypeDescriptor.GetProperties(cont);



Je vérifie que la propriété que je veux modifier existe bien et je la
modifie :



PropertyDescriptor changedProperty = properties.Find("GeneraleFontColor",
true);



if (changedProperty != null)

changedProperty.SetValue(cont, c);

else

message += "la propriété GeneraleFontColor n'existe pas dans le composant "
+ cont.Site.Name + "n";



et ca marche !!!



et en fait "RaiseComponentChanged" n'est pas utile



"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news: uIEj%
Salut Magalie ! :O)

Peux-tu nous dire comment ?
Ainsi si quelqu'un rencontre ce problème il pourra fouiller les archives
et
trouver ton message. ;O)

--
Cordialement
Yanick
MVP pour Visual Basic
"Magalie" a écrit dans le message de
news:
c'est bon j'ai trouvé :-))))))


"Magalie" a écrit dans le message de news:

> Salut,
>
> J'ai un Control (qui a un ControlDesigner) et qui contient d'autres
> Controles.
> Via un Verb, je modifie des propriétés de mon Control et de ses
> enfants.
> Pour valider la modification, j'apelle la méthode


"RaiseComponentChanged"
> mais les propriétés des enfants ne sont pas sérializé et la méthode
> "RaiseComponentChanged" est protected.
>
> comment puis-je faire ???
>
> Merci.
>