OVH Cloud OVH Cloud

Partial class : Modification manuelle de "InitializeComponent()"

4 réponses
Avatar
Gislain
Bonjour,

Dans VS.2005, on a les classes partielles, c'est bien mais...Peut-on
modifier manuellement le contenu de InitializeComponent() sans voir son code
détruit par le designer à un moment ou l'autre ?

En effet, dans une fenêtre avec un TreeView donc certains noeuds ont été
ajoutés via le designer, je souhaite modifier la propriété Tag des TreeNode.
Ces TreeNodes ne sont accessibles que dans InitializeComponent(), donc
. quel est le risque de voir mon code partir en fumée ?
. Existe t'il une autre solution plus clean ?
. Si oui, laquelle ?

Cordialement,

Gislain.

4 réponses

Avatar
Fabien Bezagu
Gislain,

Tout d'abord, je ne pense pas que cela ait un quelconque rapport avec les
classes partiels. La méthode InitializeComponent existait déjà avant. Elle a
juste été déporté pour clairifier le code. J'espère ne pas me tromper mais
c'est comme ça que je vois les choses...

Ensuite, tu as la possibilité d'éditer la propriété Tag des TreeNode
manuellement dans l'éditeur. Par défaut, il s'agira cependant d'une chaîne
de caractère et tu peux vouloir autre chose.

Enfin, il faut bien comprendre que le designer ne s'appuie pas sur autre
chose que le contenu de cette méthode pour générer le rendu de la form.
Cependant, dans un assistant complexe comme celui de l'édition des nodes, le
risque de voir ton code partir en fumée (ou au moins modifié) n'est pas nul.
Je te conseille donc de mettre ton code spécialisé dans le constructeur,
après l'appel à InitializeComponent.

Fabien

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

Bonjour,

Dans VS.2005, on a les classes partielles, c'est bien mais...Peut-on
modifier manuellement le contenu de InitializeComponent() sans voir son
code
détruit par le designer à un moment ou l'autre ?

En effet, dans une fenêtre avec un TreeView donc certains noeuds ont été
ajoutés via le designer, je souhaite modifier la propriété Tag des
TreeNode.
Ces TreeNodes ne sont accessibles que dans InitializeComponent(), donc
. quel est le risque de voir mon code partir en fumée ?
. Existe t'il une autre solution plus clean ?
. Si oui, laquelle ?

Cordialement,

Gislain.




Avatar
Gislain
Bonjour,

Effectivement, InitializeComponent existe déjà en VS.2003, mais la
déclaration des TreeNodes nécessaires à la construction du TreeView se fait
à l'intérieur de cette fonction.

Je souhaite rajouter à la propriété Tag de chacun des noeuds un objet, et
non simplement une chaine de caractère ce qui me pose donc un pb avec le
designer. Donc, je suis coincé !!! sauf si je n'utilise pas le designer pour
contruire mon TreeView, ce qui est bien dommage...

Une autre idée ??

Gislain.



"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news:
Gislain,

Tout d'abord, je ne pense pas que cela ait un quelconque rapport avec les
classes partiels. La méthode InitializeComponent existait déjà avant. Elle


a
juste été déporté pour clairifier le code. J'espère ne pas me tromper mais
c'est comme ça que je vois les choses...

Ensuite, tu as la possibilité d'éditer la propriété Tag des TreeNode
manuellement dans l'éditeur. Par défaut, il s'agira cependant d'une chaîne
de caractère et tu peux vouloir autre chose.

Enfin, il faut bien comprendre que le designer ne s'appuie pas sur autre
chose que le contenu de cette méthode pour générer le rendu de la form.
Cependant, dans un assistant complexe comme celui de l'édition des nodes,


le
risque de voir ton code partir en fumée (ou au moins modifié) n'est pas


nul.
Je te conseille donc de mettre ton code spécialisé dans le constructeur,
après l'appel à InitializeComponent.

Fabien

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

> Bonjour,
>
> Dans VS.2005, on a les classes partielles, c'est bien mais...Peut-on
> modifier manuellement le contenu de InitializeComponent() sans voir son
> code
> détruit par le designer à un moment ou l'autre ?
>
> En effet, dans une fenêtre avec un TreeView donc certains noeuds ont été
> ajoutés via le designer, je souhaite modifier la propriété Tag des
> TreeNode.
> Ces TreeNodes ne sont accessibles que dans InitializeComponent(), donc
> . quel est le risque de voir mon code partir en fumée ?
> . Existe t'il une autre solution plus clean ?
> . Si oui, laquelle ?
>
> Cordialement,
>
> Gislain.
>
>





Avatar
Fabien Bezagu
> Une autre idée ??



Comme je l'ai dit dans mon précédent post : faire tes initialisations dans
le contructeur, après l'appel à InitializeComponent. Il suffit alors
d'énumérer les TreeNode dans ton TreeView.

Fabien
Avatar
Gislain
Ok, j'ai déjà débuté dans ce sens.
Merci.

Gislain.
"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de
news:O%
> Une autre idée ??

Comme je l'ai dit dans mon précédent post : faire tes initialisations dans
le contructeur, après l'appel à InitializeComponent. Il suffit alors
d'énumérer les TreeNode dans ton TreeView.

Fabien