功能是拖到窗体上后,只需要选择EditType类型就可以根据所选的类型去给控件加上相应的默认属性(例外,datasource,displaymember,valuemember等)
选择类型为None的时候也可以在窗体Load事件中重新设置这些属性我想问的是,下面的代码写的合不合理,有没有更好的办法,先行谢过各位了,第一次封装控件
    public partial class CustomGridLookUpEdit : GridLookUpEdit
    {
        #region 控件类别枚举
        /// <summary>
        /// 控件类别枚举
        /// </summary>
        public enum GridLookUpEditType
        {
            /// <summary>
            /// none
            /// </summary>
            None,
            /// <summary>
            /// 客户信息
            /// </summary>
            Customer,
            /// <summary>
            /// 厂商信息
            /// </summary>
            Provider,
            /// <summary>
            /// 产品信息
            /// </summary>
            Prod,
            /// <summary>
            /// 销售单据
            /// </summary>
            SaleOrder,
            /// <summary>
            /// 采购单据
            /// </summary>
            StockOrder
        }
        #endregion        #region 内部成员字段
        /// <summary>
        /// datasource
        /// </summary>
        private DataSet _ds;
        /// <summary>
        /// 显示的文本
        /// </summary>
        private string _displayText = null;
        /// <summary>
        /// 显示文本对应的值
        /// </summary>
        private string _displayValue = null;
        /// <summary>
        /// 控件类别
        /// </summary>
        private GridLookUpEditType _type = GridLookUpEditType.None;
        #endregion        #region 封装成员字段
        /// <summary>
        /// 
        /// </summary>
        public DataSet Ds
        {
            get { return _ds; }
            set { _ds = value; }
        }
        /// <summary>
        /// 
        /// </summary>
        public string DisplayText
        {
            get { return _displayText; }
            set { _displayText = value; }
        }
        /// <summary>
        /// 
        /// </summary>
        public string DisplayValue
        {
            get { return _displayValue; }
            set { _displayValue = value; }
        }
        /// <summary>
        /// 数据源
        /// </summary>
        public object DataSource
        {
            get { return this.Properties.DataSource; }            set { this.Properties.DataSource = value; }
        }
        /// <summary>
        /// 
        /// </summary>
        public GridLookUpEditType EditType
        {
            get { return _type; }
            set
            {
                _type = value;
                SetDisplayValue(_type);
            }
        }
        #endregion        #region 自动生成代码
        /// <summary>
        /// 构造
        /// </summary>
        public CustomGridLookUpEdit()
        {
            InitializeComponent();        }
        /// <summary>
        /// 重构
        /// </summary>
        /// <param name="container"></param>
        public CustomGridLookUpEdit(IContainer container)
        {
            container.Add(this);            InitializeComponent();
        }
        #endregion        #region 选择对应类别
        /// <summary>
        /// 
        /// </summary>
        public void SetDisplayValue(GridLookUpEditType type)
        {
            switch (type)
            {
                case GridLookUpEditType.None: None(); break;                    //none
                case GridLookUpEditType.Customer: CustomerEdit(); break;        //客户信息
                case GridLookUpEditType.Provider: ProviderEdit(); break;        //厂商信息
                case GridLookUpEditType.Prod: ProdEdit(); break;                //产品信息
                case GridLookUpEditType.SaleOrder: SaleOrderEdit(); break;      //销售订单
                case GridLookUpEditType.StockOrder: StockOrderEdit(); break;    //采购订单
            }
        }
        /// <summary>
        /// none
        /// </summary>
        private void None()
        {
            this.Ds = null;
            this.DisplayText = null;
            this.DisplayValue = null;
            DataBinding();
        }
        /// <summary>
        /// 客户信息
        /// </summary>
        private void CustomerEdit()
        {
            this.DisplayText = "Customer";
            this.DisplayValue = "CustomerId";
            //(new GetDBType()).GetDataBase().GetData(DALClassType.Customer);这个是通过反射去数据层取得数据源
            this.Ds = (new GetDBType()).GetDataBase().GetData(DALClassType.Customer);
            DataBinding();
        }
        /// <summary>
        /// 产商信息
        /// </summary>
        private void ProviderEdit()
        {
            this.DisplayText = "Provider";
            this.DisplayValue = "ProviderId";
            this.Ds = (new GetDBType()).GetDataBase().GetData(DALClassType.Provider);
            DataBinding();
        }
        /// <summary>
        /// 产品信息
        /// </summary>
        private void ProdEdit()
        {
            this.DisplayText = "Prod";
            this.DisplayValue = "ProdId";
            this.Ds = (new GetDBType()).GetDataBase().GetData(DALClassType.Prod);
            DataBinding();
        }
        /// <summary>
        /// 销售订单
        /// </summary>
        private void SaleOrderEdit()
        {
            this.DisplayText = "SaleOrder";
            this.DisplayValue = "SaleOrderId";
            this.Ds = (new GetDBType()).GetDataBase().GetData(DALClassType.SaleOrder);
            DataBinding();
        }
        /// <summary>
        /// 采购订单
        /// </summary>
        private void StockOrderEdit()
        {
            this.DisplayText = "StockOrder";
            this.DisplayValue = "StockOrderId";
            this.Ds = (new GetDBType()).GetDataBase().GetData(DALClassType.StockOrder);
            DataBinding();
        }
        #endregion        #region 默认属性设置
        /// <summary>
        /// 数据绑定
        /// </summary>
        private void DataBinding()
        {
            this.Properties.TextEditStyle = TextEditStyles.Standard;            this.Properties.DisplayMember = this._displayText;            this.Properties.ValueMember = this._displayValue;            if (this.Ds != null)
                this.DataSource = this.Ds.Tables[0];
            else
                this.DataSource = null;
        }
        #endregion    }