/// <summary> /// 在给定 Object 的一组属性值的情况下重新创建该对象 /// </summary> /// <param name="context"></param> /// <param name="propertyValues"></param> /// <returns></returns> public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues) { if (propertyValues == null) { throw new ArgumentNullException("NullParameter"); } TypeColorPair colorPair = new TypeColorPair(); colorPair.ForeColor = (Color)propertyValues["ForeColor"]; colorPair.BackColor = (Color)propertyValues["BackColor"]; return(colorPair); }
/// <summary> /// 将给定值对象转换为指定的类型 /// </summary> /// <param name="context"></param> /// <param name="culture"></param> /// <param name="value"></param> /// <param name="destinationType"></param> /// <returns></returns> public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { TypeColorPair color = value as TypeColorPair; if (color != null) { // 转成String if ((destinationType == typeof(string))) { return(color.ToString()); } } // 基类的ConvertTo()必须调用 return(base.ConvertTo(context, culture, value, destinationType)); }
/// <summary> /// 将给定值转换为此转换器的类型 /// </summary> /// <param name="context"></param> /// <param name="culture"></param> /// <param name="value"></param> /// <returns></returns> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { // 从String转换 string colorValue = (string)value; if (colorValue != null) { try { TypeColorPair colorPair = new TypeColorPair(); string[] colorParts = colorValue.Split(new char[] { '|' }); colorPair.XmlForeColor = colorParts[0].Trim(); colorPair.XmlBackColor = colorParts[1].Trim(); return(colorPair); } catch { throw; } } return(base.ConvertFrom(context, culture, value)); }