.net WinForm 사용자 컨트롤 개발 -- (7) 사용자 컨트롤 드롭다운 속성 설정

이 절에서 우리는 사용자 컨트롤의 하단식 속성 설정을 함께 배워서 사용자 컨트롤에 속성을 설정하는 아래 테두리의 형식으로 나타낼 수 있다. 효과도는 다음과 같다.
     
여기서 사용자 컨트롤을 정의하고 속성을 설정합니다 DropDownPropery
코드는 다음과 같다.
   
  public partial class UCLab : UserControl
    {
        public UCLab()
        {
            InitializeComponent();
        }

       

        private string dropdownPropery="Hello";
        [Description("    ")]
        [Editor(typeof(DropTypeDialogEditor),typeof(UITypeEditor))]
        public string DropDownPropery
        {
            get
            {
                return dropdownPropery;
            }
            set
            {
                dropdownPropery = value;
            }
        }

       
    }

이어서 이 속성은 아래 편집기를 설정합니다. 코드는 다음과 같습니다.
     
 /// <summary>
    ///       
    /// </summary>
    public class DropTypeDialogEditor:UITypeEditor
    {
        public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
        {
            if (context!=null&&context.Instance!=null)
            {
                return UITypeEditorEditStyle.DropDown;//      
            }
            return base.GetEditStyle(context);
        }

        public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
        {
            System.Windows.Forms.Design.IWindowsFormsEditorService editorService = null;
            if (context!=null&&context.Instance!=null&&provider!=null)
            {
                editorService = (System.Windows.Forms.Design.IWindowsFormsEditorService)provider.GetService(typeof(System.Windows.Forms.Design.IWindowsFormsEditorService));
                if (editorService!=null)
                {
                    UCLab lab =(UCLab)context.Instance;
                    UCDrop drop = new UCDrop(lab.DropDownPropery);
                    editorService.DropDownControl(drop);
                    value = drop.Result;
                    return value;
                }

            }
            //return base.EditValue(context, provider, value);
            return value;
        }
    
    }

상기 코드는 사용자 컨트롤을 창에 끌어다 놓고 이 속성을 설정하면 다음과 같은 창 디스플레이를 할 수 있습니다.
DEMO 다운로드:http://download.csdn.net/detail/zx13525079024/4552462
 

좋은 웹페이지 즐겨찾기