关于C#开发用户控件->属性的类型转换问题!大家给点提示....
using System;
using System.Windows.Forms;
using System.Drawing;
using System.Reflection;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
namespace UserControl
{
/// <summary>
/// ImageArray 的摘要说明。
/// </summary>
[TypeConverter(typeof(ImageArrayConverter))]
public class ImageArray
{
private Image _onPress;
private Image _onOver;
private Image _onOut;
private Image _onForbid;
public ImageArray()
{
}
public ImageArray(Image _onPress, Image _onOver, Image _onOut, Image _onForbid)
{
this._onPress = _onPress;
this._onOver = _onOver;
this._onOut = _onOut;
this._onForbid = _onForbid;
}
public Image OnPress
{
get
{
return this._onPress;
}
set
{
this._onPress = value;
}
}
public Image OnOver
{
get
{
return this._onOver;
}
set
{
this.OnOver = value;
}
}
public Image OnOut
{
get
{
return this._onOut;
}
set
{
this._onOut = value;
}
}
public Image OnForbid
{
get
{
return this._onForbid;
}
set
{
this._onForbid = value;
}
}
}
/// <summary>
/// ImageArrayConverter 的摘要说明。
/// </summary>
public class ImageArrayConverter : ImageConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)/*1*/
{
if (sourceType == typeof(String)) return true;
return base.CanConvertFrom(context, sourceType);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(ImageArray)) return true;
if (destinationType == typeof(InstanceDescriptor)) return true;
return base.CanConvertTo(context, destinationType);
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)/*2*/
{
if (destinationType == typeof(String))
{
return "请选择... ";
}
if (destinationType == typeof(InstanceDescriptor))
{
ConstructorInfo ci = typeof(ImageArray).GetConstructor(new Type[] { typeof(Image), typeof(Image), typeof(Image), typeof(Image) });
ImageArray array = (ImageArray)value;
return new InstanceDescriptor(ci, new object[] { array.OnPress, array.OnOver, array.OnOut, array.OnForbid });