这是一个类似listview的控件。
下面这些代码有什么用?
CollectionEditor类,TypeConverter类都是干什么用的?
谢谢
internal class CustomCollectionEditor : CollectionEditor
{
private int m_nUnique = 1;
/// <summary>
/// Default Constructor for custom column collection editor
/// </summary>
/// <param name="type"></param>
   public CustomCollectionEditor(Type type) : base(type)
{
}
/// <summary>
/// Called to edit a value in collection editor
/// </summary>
/// <param name="context"></param>
/// <param name="isp"></param>
/// <param name="value"></param>
/// <returns></returns>
///      public override object EditValue(ITypeDescriptorContext context, IServiceProvider isp, object value)
{
GlacialList originalControl = (GlacialList)context.Instance;
///GlacialList是这个控件类
object returnObject = base.EditValue( context, isp, value ); originalControl.Refresh();//.Invalidate( true );
return returnObject;
} /// <summary>
/// Creates a new instance of a column for custom collection
/// </summary>
/// <param name="itemType"></param>
/// <returns></returns>
   protected override object CreateInstance(Type itemType)
    {
// here we are making sure that we generate a unique column name every time
object[] cols;
string strTmpColName;
do
{
strTmpColName = "Column" + m_nUnique.ToString();
cols = this.GetItems( strTmpColName ); m_nUnique++;
} while ( cols.Length != 0 ); // instance the column and set its ident name
object col = base.CreateInstance (itemType);
((GLColumn)col).Name = strTmpColName; return col;
}
} /// <summary>
/// GLColumnConverter
/// </summary>
/// 
public class GLColumnConverter : TypeConverter
{
/// <summary>
/// Required for correct collection editor use
/// </summary>
/// <param name="context"></param>
/// <param name="destinationType"></param>
/// <returns></returns>
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(InstanceDescriptor))
{
return true;
}
return base.CanConvertTo(context, destinationType);
} /// <summary>
/// Required for correct collection editor use
/// </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)
{
if (destinationType == typeof(InstanceDescriptor) && value is GLColumn)///GLColumn是列类
{
GLColumn column = (GLColumn)value;
              
ConstructorInfo ci = typeof(GLColumn).GetConstructor(new Type[] {});
if (ci != null)
{
return new InstanceDescriptor(ci, null, false);
}
}
return base.ConvertTo(context, culture, value, destinationType);
}
}

解决方案 »

  1.   

    这些类,在你使用IDE时,可以方便的用对象属性编辑器进行编辑!
      

  2.   

    sliverseven和weishunding经常帮助我,虽然不认识,先谢谢了================================================================
    此帖通过csdn小助手回复。
        CSDN小助手是使用vb.net编写的CSDN论坛脱机“外挂”,她能够在
    脱离IE的情况下使用Csdn论坛。程序只加载最核心的数据,所以显示更
    快,产生的流量更小。    下载地址:http://qqwwee.com/csdn.rar
    ================================================================