自定义一个组件,然后有个属性里的数据是从数据库读出的而且要做成下拉框如 text文本框中的Visable的true和false似的。不能用枚举。

解决方案 »

  1.   

    我介个方法不是用组件,简陋的实现了一下
    1.定义一个usercontrol,里面放一个listbox控件,在用户控件里面代码如下:
    private object[] mParam = {};        /// <summary>
            /// 添加注释
            /// </summary>
            public object[] Param
            {            get
                {
                    this.listBox1.Items.CopyTo(mParam, 0);
                    return mParam;
                }
                set
                {
                    this.listBox1.Items.AddRange(value);
                }        }        public object Value
            {
                get { return this.listBox1.SelectedItem; }
            }
    2.定义一个继承UITypeEditor的TestUITypeEditor,代码如下:
    class TestUITypeEditor : UITypeEditor
        {
            public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
            {            return UITypeEditorEditStyle.DropDown;        }        public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
            {            IWindowsFormsEditorService wfes = provider.GetService(
                    typeof(IWindowsFormsEditorService)) as
                    IWindowsFormsEditorService;            if (wfes != null)
                {
                    UserControl1 userctrl = new UserControl1();                userctrl.Param = new string[] { "123", "234", "345" };                wfes.DropDownControl(userctrl);
                    value = userctrl.Value;
                }            return value;        }
        }
    3.定义一个属性类TestProperty
    public class TestProperty
        {
            [DisplayName("测试"), Description("测试描述")]
            [Editor(typeof(TestUITypeEditor), typeof(UITypeEditor))]
            public string TestValue
            {
                get;
                set;
            }
        }
    4.最后拉一个propertygrid控件,到主窗口上,想办法设置控件的SelectedObject
    this.propertyGrid1.SelectedObject = new TestProperty { };这个方法也是找了很久,看到某女洋鬼子写的东西才搞通的,希望对你有帮助
      

  2.   

    MSDN上搜搜设计时支持,主要是重写UITypeEditor