用例:用户对设计图面上的对象进行字体自定义,我需要加载/保存到我的数据存储区.即Bold,Italics,Size,Font Name等设置需要保留.
是否有一些简单(和可靠)的机制来转换/从字体对象的字符串表示回读(在这种情况下,我只需要一个属性)?或者是多个属性与自定义逻辑相结合的正确选项?
使用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
如果要使用XML序列化,可以创建Font类包装器,它将存储Font属性的某些子集.
注(Gishu) - 切勿直接访问型号转换器.而是使用TypeDescriptor访问适当的转换器.很重要 :)