Beispiel #1
0
 /// <summary>
 /// 编辑数据
 /// </summary>
 /// <param name="context">参数</param>
 /// <param name="provider">参数</param>
 /// <param name="value">旧数据</param>
 /// <returns>编辑后的新数据</returns>
 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
     if (editor != null)
     {
         XColorValue xc       = value as XColorValue;
         Color       oldColor = xc == null ? Color.Empty : xc.Value;
         Color       newColor = (Color)editor.EditValue(context, provider, oldColor);
         if (oldColor.Equals(newColor) == false)
         {
             return(new XColorValue(newColor));
         }
         else
         {
             return(value);
         }
     }
     else
     {
         using (ColorDialog dlg = new ColorDialog())
         {
             XColorValue xc = value as XColorValue;
             if (xc != null)
             {
                 dlg.Color = xc.Value;
                 if (dlg.ShowDialog() == DialogResult.OK)
                 {
                     return(new XColorValue(dlg.Color));
                 }
             }
         }
     }
     return(value);
 }
Beispiel #2
0
        /// <summary>
        /// 复制对象
        /// </summary>
        /// <returns>复制品</returns>
        object ICloneable.Clone()
        {
            XColorValue v = new XColorValue();

            v._Value = this._Value;
            return(v);
        }
Beispiel #3
0
        /// <summary>
        /// 绘制数据
        /// </summary>
        /// <param name="e">参数</param>
        public override void PaintValue(PaintValueEventArgs e)
        {
            XColorValue color = e.Value as XColorValue;

            if (color == null)
            {
                color = new XColorValue();
            }
            using (SolidBrush b = new SolidBrush(color.Value))
            {
                e.Graphics.FillRectangle(b, e.Bounds);
            }
        }
Beispiel #4
0
        /// <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, System.Globalization.CultureInfo culture, object value, Type destinationType)
        {
            XColorValue xc = value as XColorValue;

            if (destinationType.Equals(typeof(string)))
            {
                return(xc == null ? null : xc.StringValue);
            }
            else if (destinationType.Equals(typeof(Color)))
            {
                return(xc == null ? Color.Empty : xc.Value);
            }
            else if (destinationType.Equals(typeof(InstanceDescriptor)))
            {
                return(new InstanceDescriptor(
                           typeof(XColorValue).GetConstructor(new Type[] { typeof(string) }),
                           new object[] { xc.StringValue }));
            }
            return(null);
        }