class MyClass
{
List<String> m_aryString = new List<String>();
}这样一个类放给propertygrid,我希望aryString 里的各项字符串能用combobox来显示,请问我该怎么做呢?

解决方案 »

  1.   

    必须为每一个属性显示指定TypeConvert.第一步:MyClass类里,设置一个属性ListValue,返回<List<String>
    [TypeConverter(typeof(TypeConverterListValue))]
            public ListValue<String> ListValue
            {
                get
                {
                    return m_ListValue;
                }
                set
                {
                    m_ListValue = value;
                }
            }第二步:定义属性类转换器
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.ComponentModel;namespace Generator.Design.BLL.Controls
    {
        public class TypeConverterListValue:StringConverter
        {
            public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
            {
                return true;
            }
            public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
            {
                return new StandardValuesCollection(new string[] { "单条数据","表格","树" });
            }
            public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
            {
                return true;
            }
        }
    }
    你需要重写上面的第二个方法,如果是变量,则此类型转换器的构造函数应带一个参数(自由设定)第三步:显示类即可
    propertygrid.SelectedObject=MyCalss
      

  2.   

    学习啦,正好也在用到怎么添加下拉框。看后问题解决了,多谢zdhsnail的回复