J'ai ensuite crée une fenêtre dans Visual Studio 2005, j'ai ajouté un
DataGridView puis à l'intérieur une colonne de type "CalendarColumn" qui
s'appelle "colDate".
Je compilé, et je test, tout fonctionne sans problème.
Maintenant je voudrais rajouter une propriété dans la classe
"CalendarColumn".
J'ai écris pour cela dans la classe CalendarColumn :
/*-------------------------*/
public class CalendarColumn : .....
{
....
....
private string propTest;
public string PropTest
{
get { return this.propTest; }
set { this.propTest; }
}
}
/*-------------------------*/
Après je passe sous l'éditeur de Form de Visual Studio 2005.
J'ouvre la fenêtre d'édition des colonnes (Edit Columns) de mon
DataGridView.
Je clique à gauche sur "colDate".
A droite, je constate bien la présence, de ma nouvelle propriété "PropTest".
Je saisie alors une valeur pour cette propriété (par exemple "test").
Je ferme alors la fenêtre d'édition des colonnes.
Et je la rouvre de nouveau.
Je clique à gauche sur "colDate".
Je remarque que ma propriété "PropTest" contient aucune valeur.
De plus le Design Mode ne génère aucune ligne de code (dans le fichier
Form1.Designer.cs) pour ma propriété "PropTest".
Par contre si je modifie une propriété autre que celles dont j'ai crée (par
exemple .Width), celle-ci est bien sauvegardé et généré dans le code du
designer.
D'où provient ce problème de persistance des propriétés personnalisé ? Un
attribut que je n'aurais point vue ? Faut-il programmer une classe
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles TOURREAU
Je me réponds à moi-même si d'autres personnes on le même genre de problème...
Pour résoudre ce problème, il faut redéfinir la méthode de clonage "Clone()" afin que celle-ci puisse recopier les nouvelles propriétés. En effet cette méthode est appelé par le Design-Time de Visual Studio lors de l'édition des colonnes d'un DataGridView.
Un exemple de clonage pour la classe du post précédent :
public override object Clone() { CalendarColumn c; c = (CalendarColumn)base.Clone(); c.PropTest = this.PropTest; return c; }
-- Gilles TOURREAU Responsable Informatique
Société P.O.S Spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr
"Gilles TOURREAU" a écrit dans le message de news:
Salut tout le monde !
Je souhaite créer une colonne pour un DataGridView contenant des DateTimePicker. Pour cela j'ai pris l'exemple de Microsoft suivant :
J'ai ensuite crée une fenêtre dans Visual Studio 2005, j'ai ajouté un DataGridView puis à l'intérieur une colonne de type "CalendarColumn" qui s'appelle "colDate". Je compilé, et je test, tout fonctionne sans problème.
Maintenant je voudrais rajouter une propriété dans la classe "CalendarColumn".
J'ai écris pour cela dans la classe CalendarColumn :
/*-------------------------*/ public class CalendarColumn : ..... { .... .... private string propTest;
public string PropTest { get { return this.propTest; } set { this.propTest; } } } /*-------------------------*/
Après je passe sous l'éditeur de Form de Visual Studio 2005. J'ouvre la fenêtre d'édition des colonnes (Edit Columns) de mon DataGridView. Je clique à gauche sur "colDate". A droite, je constate bien la présence, de ma nouvelle propriété "PropTest". Je saisie alors une valeur pour cette propriété (par exemple "test").
Je ferme alors la fenêtre d'édition des colonnes. Et je la rouvre de nouveau. Je clique à gauche sur "colDate". Je remarque que ma propriété "PropTest" contient aucune valeur.
De plus le Design Mode ne génère aucune ligne de code (dans le fichier Form1.Designer.cs) pour ma propriété "PropTest". Par contre si je modifie une propriété autre que celles dont j'ai crée (par exemple .Width), celle-ci est bien sauvegardé et généré dans le code du designer.
D'où provient ce problème de persistance des propriétés personnalisé ? Un attribut que je n'aurais point vue ? Faut-il programmer une classe
En vous remerciant par avance de vos réponses...
Gilles TOURREAU
Je me réponds à moi-même si d'autres personnes on le même genre de
problème...
Pour résoudre ce problème, il faut redéfinir la méthode de clonage "Clone()"
afin que celle-ci puisse recopier les nouvelles propriétés.
En effet cette méthode est appelé par le Design-Time de Visual Studio lors
de l'édition des colonnes d'un DataGridView.
Un exemple de clonage pour la classe du post précédent :
public override object Clone()
{
CalendarColumn c;
c = (CalendarColumn)base.Clone();
c.PropTest = this.PropTest;
return c;
}
J'ai ensuite crée une fenêtre dans Visual Studio 2005, j'ai ajouté un
DataGridView puis à l'intérieur une colonne de type "CalendarColumn" qui
s'appelle "colDate".
Je compilé, et je test, tout fonctionne sans problème.
Maintenant je voudrais rajouter une propriété dans la classe
"CalendarColumn".
J'ai écris pour cela dans la classe CalendarColumn :
/*-------------------------*/
public class CalendarColumn : .....
{
....
....
private string propTest;
public string PropTest
{
get { return this.propTest; }
set { this.propTest; }
}
}
/*-------------------------*/
Après je passe sous l'éditeur de Form de Visual Studio 2005.
J'ouvre la fenêtre d'édition des colonnes (Edit Columns) de mon
DataGridView.
Je clique à gauche sur "colDate".
A droite, je constate bien la présence, de ma nouvelle propriété
"PropTest". Je saisie alors une valeur pour cette propriété (par exemple
"test").
Je ferme alors la fenêtre d'édition des colonnes.
Et je la rouvre de nouveau.
Je clique à gauche sur "colDate".
Je remarque que ma propriété "PropTest" contient aucune valeur.
De plus le Design Mode ne génère aucune ligne de code (dans le fichier
Form1.Designer.cs) pour ma propriété "PropTest".
Par contre si je modifie une propriété autre que celles dont j'ai crée
(par exemple .Width), celle-ci est bien sauvegardé et généré dans le code
du designer.
D'où provient ce problème de persistance des propriétés personnalisé ? Un
attribut que je n'aurais point vue ? Faut-il programmer une classe
Je me réponds à moi-même si d'autres personnes on le même genre de problème...
Pour résoudre ce problème, il faut redéfinir la méthode de clonage "Clone()" afin que celle-ci puisse recopier les nouvelles propriétés. En effet cette méthode est appelé par le Design-Time de Visual Studio lors de l'édition des colonnes d'un DataGridView.
Un exemple de clonage pour la classe du post précédent :
public override object Clone() { CalendarColumn c; c = (CalendarColumn)base.Clone(); c.PropTest = this.PropTest; return c; }
-- Gilles TOURREAU Responsable Informatique
Société P.O.S Spécialiste en motoculture depuis + de 30 ans ! http://www.pos.fr
"Gilles TOURREAU" a écrit dans le message de news:
Salut tout le monde !
Je souhaite créer une colonne pour un DataGridView contenant des DateTimePicker. Pour cela j'ai pris l'exemple de Microsoft suivant :
J'ai ensuite crée une fenêtre dans Visual Studio 2005, j'ai ajouté un DataGridView puis à l'intérieur une colonne de type "CalendarColumn" qui s'appelle "colDate". Je compilé, et je test, tout fonctionne sans problème.
Maintenant je voudrais rajouter une propriété dans la classe "CalendarColumn".
J'ai écris pour cela dans la classe CalendarColumn :
/*-------------------------*/ public class CalendarColumn : ..... { .... .... private string propTest;
public string PropTest { get { return this.propTest; } set { this.propTest; } } } /*-------------------------*/
Après je passe sous l'éditeur de Form de Visual Studio 2005. J'ouvre la fenêtre d'édition des colonnes (Edit Columns) de mon DataGridView. Je clique à gauche sur "colDate". A droite, je constate bien la présence, de ma nouvelle propriété "PropTest". Je saisie alors une valeur pour cette propriété (par exemple "test").
Je ferme alors la fenêtre d'édition des colonnes. Et je la rouvre de nouveau. Je clique à gauche sur "colDate". Je remarque que ma propriété "PropTest" contient aucune valeur.
De plus le Design Mode ne génère aucune ligne de code (dans le fichier Form1.Designer.cs) pour ma propriété "PropTest". Par contre si je modifie une propriété autre que celles dont j'ai crée (par exemple .Width), celle-ci est bien sauvegardé et généré dans le code du designer.
D'où provient ce problème de persistance des propriétés personnalisé ? Un attribut que je n'aurais point vue ? Faut-il programmer une classe