c# 自定义控件


一、自定义控件

1、新建Windows 窗体控件库

在这里插入图片描述

2、自定义属性

        /// <summary>
        /// 形状选取的值
        /// </summary>
        private string graphicalnum = "1";
        [Description("修改此值,选择绘制图形"), Category("自定义属性")]
        public string Graphicalnum 
        { 
            get
            {
                return graphicalnum;
            }
            set
            {
                graphicalnum = value;
            }
        }


        /// <summary>
        /// 0:直线、1:矩形、2:椭圆
        /// </summary>
        private string graphical = "";
        [Description("绘制图形"), Category("自定义属性")]
        public string Graphical
        {
            get
            {
                switch (graphicalnum)
                {
                    case "0": return "直线";
                    case "1": return "矩形";
                    case "2": return "椭圆";
                }
                return "直线";
            }
            set
            {
                graphical = value;
            }
        }


        /// <summary>
        /// 线条粗细
        /// </summary>
        private string lineThickness  = "3";
        [Description("线条粗细"), Category("自定义属性")]
        public string LineThickness
        {
            get
            {
                return lineThickness;
            }
            set
            {
                lineThickness = value;
            }
        }


        /// <summary>
        /// 线条颜色
        /// </summary>
        private Color lineColor = Color.Red;
        [Description("线条颜色"), Category("自定义属性")]
        public Color LineColor
        {
            get
            {
                return lineColor;
            }
            set
            {
                lineColor = value;
            }
        }

        /// <summary>
        /// 图片
        /// </summary>
        private Image img;
        [Description("图片"), Category("自定义属性")]
        public Image Img
        {
            get
            {
                return img;
            }
            set
            {
                img = value;
            }
        }

运行启动后
在这里插入图片描述

3、自定义事件

        private void UserControl1_MouseDown(object sender, MouseEventArgs e)
        {
            
            if (e.Button == MouseButtons.Left)
            {
                isdown = true;
                px = e.X;
                py = e.Y;
            }
            else
            {
                Application.Exit();
            }

        }

        private void UserControl1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isdown)
            {
                
            }
        }

        private void UserControl1_MouseUp(object sender, MouseEventArgs e)
        {
            isdown = false;
            Coordinate coordinate = new Coordinate(int.Parse(graphicalnum), e.X, e.Y);

            px2 = e.X;
            py2 = e.Y;
            //绘制图形
            Graphics graphics = this.CreateGraphics();
            Pen pen = new Pen(lineColor, float.Parse(lineThickness));

            if (this.graphicalnum.Equals("0")) //直线
            {
                Application.Idle += new EventHandler(set);
                graphics.DrawLine(pen, float.Parse(px.ToString()), float.Parse(py.ToString()), float.Parse((px2).ToString()), float.Parse((py2).ToString()));
            }
            else if (this.graphicalnum.Equals("1"))  //矩形
            {
                Application.Idle += new EventHandler(set);
                graphics.DrawRectangle(pen, float.Parse(px.ToString()), float.Parse(py.ToString()), float.Parse((px2 - px).ToString()), float.Parse((py2 - py).ToString()));
            }
            else if (this.graphicalnum.Equals("2")) //椭圆
            {
                Application.Idle += new EventHandler(set);
                graphics.DrawEllipse(pen, float.Parse(px.ToString()), float.Parse(py.ToString()), float.Parse((px2 - px).ToString()), float.Parse((py2 - py).ToString()));
            }
        }

在这里插入图片描述

4、将生成控件的DLL文件拉入工具箱

在项目的Debug文件目录下
在这里插入图片描述
直接把DLL文件拖入工具相中
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值