c# winform PropertyGrid控件 为指定属性增加自定义控件

功能描述: 点击省略号按钮,弹出下拉框(也可以是提示窗口),显示自定义用户控件

效果图:
在这里插入图片描述

1.创建用户控件:

在这里插入图片描述

    public partial class PropertyGridMoreControl : UserControl
    {
        private object Val;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="val"></param>
        public PropertyGridMoreControl(object val)
        {
            InitializeComponent();
            Val = val;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGetPlatPoint_Click(object sender, EventArgs e)
        {
            if (Val.GetType() == typeof(Point)) 
            {
                MessageBox.Show("Point类型为:" + Val.ToString());
                return;
            }

            if (Val.GetType() == typeof(double)) 
            {
                MessageBox.Show("double类型为:" + Val.ToString());
                return;
            }
        }

        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMoveTo_Click(object sender, EventArgs e)
        {
            if (Val.GetType() == typeof(Point))
            {
                MessageBox.Show("Point类型为:" + Val.ToString());
                return;
            }

            if (Val.GetType() == typeof(double))
            {
                MessageBox.Show("double类型:" + Val.ToString());
                return;
            }
        }
    }

2.创建编辑器

    /// <summary>
    /// 
    /// </summary>
    public class Editor : UITypeEditor
    {
        /// <summary>
        /// 更改属性值编辑样式(增加省略号按钮)
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
        {
            return UITypeEditorEditStyle.Modal;
        }

        /// <summary>
        /// 增加自定义用户控件
        /// </summary>
        /// <param name="context"></param>
        /// <param name="provider"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, System.IServiceProvider provider, object value)
        {
            var formES = provider.GetService(typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService;
            if (formES != null)
            {
                var popedControl = new PropertyGridMoreControl(value);
                //弹出窗口
                //formES.ShowDialog(窗口/对话框);
                //下拉框
                formES.DropDownControl(popedControl);
            }

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

3.配置属性编辑器

        /// <summary>
        /// 
        /// </summary>
        [Editor(typeof(Editor), typeof(UITypeEditor))]
        public Point PntFeeding { get; set; }

完结。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值