2009-08-13 5 views

Répondre

1

Via la classe XMLSerializer.

Et here est un bon exemple de la façon de le faire. Et comme les contrôles ne sont pas sérialisables, here est un moyen de contourner ce problème.

EDIT: Voici deux autres exemples de la façon de faire sérialisation XML:
http://www.dotnetjohn.com/articles.aspx?articleid=173
http://devhood.mit.edu/Tutorials/tutorial_details.aspx?tutorial_id=236

Comme pour le code exact de faire ce que vous essayez de faire, je me rends compte maintenant que nous sommes en réalité en utilisant BinaryFormatter qui est un peu différent de la façon dont XMLSerializer fait les choses, fournir du code ne vous serait donc pas utile. Toutefois, l'algorithme est essentiellement:

  1. Saisissez les informations de propriété requises (hauteur, largeur, etc.) du contrôle que vous souhaitez enregistrer et stockez ces données dans une classe que vous avez créée à cette fin.
  2. Stockez la classe à l'aide de la méthode Serialize dans XMLSerializer.
  3. Lorsque vous devez charger à nouveau ce contrôle, utilisez la méthode Deserialize dans XMLSerializer pour charger la classe précédemment enregistrée.
  4. Créez une nouvelle instance du contrôle que vous essayez de "réactiver", puis copiez les propriétés appropriées de la classe que vous avez créée dans le contrôle.
+0

Très bien, merci. mais puis-je aussi juste sérialiser une certaine propriété et non toute la classe? par exemple la largeur des en-têtes de colonnes d'un contrôle listview? –

+0

Oui. J'utilise un petit sous-ensemble de propriétés de contrôle (je les stocke dans une classe "stub", en ne copiant que les informations que je veux sauvegarder) et ensuite sérialiser cette classe. Lorsque j'en ai besoin, je désérialise la classe de sous-ensembles, crée un nouveau contrôle, puis modifie les propriétés du contrôle en fonction des paramètres que j'ai enregistrés. –

+0

et comment faites-vous exactement cela? Pouvez-vous s'il vous plaît me donner un exemple? –

Questions connexes