Question

Usecase: l'utilisateur modifie les polices d'un objet situé sur l'aire de conception, que je dois charger / enregistrer dans mon magasin de données. C'est à dire. Les paramètres tels que Gras, Italique, Taille, Nom de police doivent être conservés.

Existe-t-il un mécanisme simple (et fiable) de conversion / lecture à partir d’une représentation sous forme de chaîne de l’objet de police (auquel cas je n’aurais besoin que d’un attribut)? Ou bien la combinaison de plusieurs propriétés avec une logique personnalisée est-elle la bonne option?

Était-ce utile?

La solution

Utilisez TypeConverter :

Font font = new Font("Arial", 12, GraphicsUnit.Pixel);

TypeConverter converter = TypeDescriptor.GetConverter(typeof (Font));

string fontStr = converter.ConvertToInvariantString(font);

Font font2 = (Font) converter.ConvertFromString(fontStr);

Console.WriteLine(font.Name == font2.Name); // prints True

Si vous souhaitez utiliser la sérialisation XML, vous pouvez créer un wrapper de classe de police qui stockera un sous-ensemble de propriétés de police.

Remarque (Gishu) - N'accédez jamais directement à un convertisseur de type. À la place, accédez au convertisseur approprié à l'aide de TypeDescriptor. Très important:)

Autres conseils

Dans le projet sur lequel je travaille, je suis allé avec les propriétés multiples.

Je sauvegarde la police dans une table de base de données en indiquant son nom, sa taille, son style et son unité, puis en conservant ces valeurs.

La recréation de la police à la demande une fois ces valeurs reçues est un jeu d'enfant.

Quel type de banque de données devez-vous conserver pour rester? Si ce ne sont que des paramètres utilisateur qui peuvent être conservés dans un fichier, vous pouvez sérialiser l'objet de police en fichier binaire ou XML au format binaire (si vous souhaitez pouvoir modifier directement le fichier de configuration). Les espaces de noms de sérialisation (System.Xml.Serialization et System.Runtime.Serialization) fournissent tous les outils permettant de le faire sans écrire de code personnalisé.

Site MSDN sur la sérialisation XML: Sérialisation XML dans le .Net Framework

[EDIT] Ainsi, de façon apparente, l'objet fonte n'est pas sérialisable. oops :( Désolé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top