全国服务热线:

15861139266

控件开发方法--苏州机器视觉培训苏州上位机培训
发布时间:2022-11-01 12:23:30 点击次数:800

要开发自己的控件,有几种方法:


复合控件(Composite Controls):将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求。


扩展控件(Extended Controls):就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求。


自定义控件(Custom Controls):就是直接从System.Windows.Forms.Control类派生,也就是说完全由自己来设计、实现一个全新的控件,

这是最灵活、最强大的方法,但是,对开发者的要求也是最高的。要实现一个自定义控件,必须为Control类的的OnPaint事件编写代码,

在OnPaint事件中实现自定义控件的绘制工作。同时,还可以重写Control类的WndProc方法,来处理底层的Windows消息。所以说,要实现一个自定义控件,对开发者的要求较高,要求开发者必须了解GDI+和Windows API的知识。




按钮升级(通过组件类扩展控件)


1.创建类库文件

2.在新建类库中添加组件类

3.进入代码视图

4.在组件类引用中添加System.Windows.Forms;引用,并引入命名空间

5.  public partial class HxButton :Button//把继承的基础类改为按钮

6.//现在额外添加一些属性功能。

        

        //1.首先添加一些枚举图标类型,后续有新的图片可以继续添加

               //对本属性添加注解,便于调用时候能够看懂意思

        [Browsable(true)]

        [Category("附加属性")]

        [Description("显示的图片选项")]

        public enum buttonImage

        {

            None,

            up,

            down,

            right,

            left, //分别对应上下左右三个图标

            stop,

            start

        }


        //2.依据上面定义枚举类型,创建一个枚举的变量

        private buttonImage imageType;


        //3.基于上面的枚举变量,创建一个按钮属性

        public buttonImage ImageType

        {

            get { return imageType; }

            set

            {

                imageType = value;

                switch (imageType)

                {

                    case buttonImage.None:

                        this.Image = null;//图标为空

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;//则文本在按钮居中

                        break;

                    case buttonImage.up:

                        this.Image = Properties.Resources.up;//图标为资源中的名称是up的图标

                        this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;//则图标在按钮居左

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleRight;//则文本在按钮居右

                        break;

                    case buttonImage.down:

                        this.Image = Properties.Resources.down;//图标为资源中的名称是down的图标

                        this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;//则图标在按钮居左

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleRight;//则文本在按钮居右

                        break;

                    case buttonImage.right:

                        this.Image = Properties.Resources.right;//图标为资源中的名称是right的图标

                        this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;//则图标在按钮居左

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleRight;//则文本在按钮居右

                        break;

                    case buttonImage.left:

                        this.Image = Properties.Resources.left;//图标为资源中的名称是left的图标

                        this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;//则图标在按钮居左

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleRight;//则文本在按钮居右

                        break;

                    case buttonImage.stop:

                        this.Image = Properties.Resources.stop;//图标为资源中的名称是stop的图标

                        this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;//则图标在按钮居左

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleRight;//则文本在按钮居右

                        break;

                    case buttonImage.start:

                        this.Image = Properties.Resources.start;//图标为资源中的名称是start的图标

                        this.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;//则图标在按钮居左

                        this.TextAlign = System.Drawing.ContentAlignment.MiddleRight;//则文本在按钮居右

                        break;

                    default:

                        break;

                }

            }       

        }



数值显示(复合控件)


1.在一个类库中,添加一个用户控件类

2.拖拽一个布局容器 TableLayoutPanel,此复合控件需要2个进行组合,所以只需要2列布局

3.分别拖2个label标签,用来放数据和单位,可以分别更改名称和初始值,调整下样式

4.在代码中添加属性,当在代码中属性被当作字段使用时,会进入死循环而无法生成


//1.添加组合控件属性:通讯连接的PLC中变量名称

        [Browsable(true)]

        [Category("附加属性")]

        [Description("下位硬件对应变量名称")]

        public string PlcValueName { get; set; }


        //2.添加组合控件属性:显示的数值

        private string show_Value = "0.0";//赋予初始值给私有字段 Show_N 是label1标签名称


        [Browsable(true)]

        [Category("附加属性")]

        [Description("显示参数,字符串格式")]

        public string Show_Value

        {

            get { return show_Value; }

            set

            {

                show_Value =value;

                Show_N.Text = show_Value;

            }

        }

        //3.添加组合控件属性:显示的单位

        private string show_单位 = "mm";//赋予初始值给私有字段


        [Browsable(true)]

        [Category("附加属性")]

        [Description("显示单位,字符串格式")]

        public string Show_单位

        {

            get { return show_单位; }

            set

            {

                show_单位 = value;

                Show_C.Text = show_单位;//Show_C 是label2标签名称单位区域控件

            }

        }

        //4.添加组合控件属性:数值区域所占比例

        private float value_Scale =0.7f;//赋予初始值给私有字段,定义占比70百分之


        [Browsable(true)]

        [Category("附加属性")]

        [Description("数值区域所占比例,0-1之间")]

        public float Value_Scale

        {

            get { return value_Scale; }

            set

            {

                value_Scale = value;

                //将当前控件的总长度乘以比例值赋值给容器中数值所占宽度值

                tableLayoutPanel1.ColumnStyles[0].Width = value_Scale * this.Width;

                //剩下的就是容器中单位所占宽度值

                tableLayoutPanel1.ColumnStyles[1].Width = this.Width-value_Scale * this.Width;

            }

        }

        //5.添加组合控件属性:数值字体属性

        private Font value_Font = new Font("宋体",10.5f,FontStyle.Bold);//实例化一个字符字段,设置字体


        [Browsable(true)]

        [Category("附加属性")]

        [Description("数值字体")]

        public Font Value_Font

        {

            get { return value_Font; }

            set

            {

                value_Font = value;

                Show_N.Font = value_Font;

            }

        }

        //6.添加组合控件属性:数值字体属性

        private Font unit_Font = new Font("宋体", 10.5f, FontStyle.Bold);//实例化一个字符字段,设置字体


        [Browsable(true)]

        [Category("附加属性")]

        [Description("单位字体")]

        public Font Unit_Font

        {

            get { return unit_Font; }

            set

            {

                unit_Font = value;

                Show_C.Font = unit_Font;

            }

        }

        //7.添加事件,数值变化事件

        

        public delegate void HxValueDelegate(object sender, EventArgs e);//创建委托

        [Browsable(true)]

        [Category("附加事件")]

        [Description("数值区域字符串改变")]

        public event HxValueDelegate HxValueChanged;//创建事件

        //将原始的标签数值改变事件,传给我们自己定义数值改变的事件即可

        private void Show_N_TextChanged(object sender, EventArgs e)

        {

            HxValueChanged?.Invoke(this, new EventArgs());

        }




苏州零基础学员怎样学机器视觉

苏州电工基础学员如何学机器视觉

苏州PLC基础学员如何学机器视觉

苏州C#与工业自动化培训

苏州C#高级语言培训

苏州C#上位机培训

苏州C#上位机培训

苏州上位机软件开发培训

苏州上位机培训

苏州C#与PLC通信培训

苏州上位机界面开发培训

苏州C#与三菱PLC培训

苏州C#与运动控制卡SDK通信培训

苏州C#与西门子PLC通信软件开发培训

苏州C#与相机SDK培训

苏州C#与ABB六轴机器人联动培训

苏州C#与爱普生EPSON四轴机器人联动培训

苏州C#与数据库培训(sqlite,mysqlsever,access)

苏州C#与工业机器人通信培训

苏州工业机器人培训

苏州ABB工业机器人培训

苏州ABB六轴工业机器人编程培训

苏州EPSON四轴机器人编程培训

苏州C#与halcon机器视觉培训

苏州halcon机器视觉培训

苏州机器视觉培训

苏州机器视觉软件开发培训

苏州视觉培训

苏州视觉软件开发培训

苏州C#视觉软件开发培训

苏州C#与halcon联合机器视觉软件开发培训

苏州C#与halcon机器视觉培训

苏州CCD机器视觉培训

苏州机器视觉检测培训

苏州运动控制卡+机器视觉培训

苏州双相机机器视觉培训

苏州9点标定视觉培训

苏州手眼标定视觉培训

苏州智能视觉培训

苏州工业相机软件开发培训

苏州相机镜头选型培训

苏州视觉检测光源打光培训

苏州ABB机器人与halcon机器视觉应用

苏州C#联合halconABB工业机器人培训

苏州C#视觉引导ABB工业机器人培训

苏州C#视觉引导epson工业机器人培训

苏州C#视觉引导三轴运动培训

苏州C#三轴运动控制培训

苏州2D+3D视觉系统培训

苏州CCD机器视觉项目实战培训班

苏州halconCCD机器视觉项目培训

苏州halcon手眼标定抓取培训

苏州halcon软件应用培训

苏州visipro软件培训

苏州海康视觉软件开发培训

苏州Halcon视觉软件培训

苏州C#与CCD机器视觉项目实战培训班

苏州C#与halconCCD机器视觉项目培训

苏州C#与halcon手眼标定抓取培训

苏州halcon软件应用培训

苏州visipro软件培训

苏州海康视觉软件开发培训

苏州C#halcon软件应用培训

苏州C#与visipro机器视觉软件培训

苏州C#工业软件培训

苏州机器视觉引导机器人抓取培训

苏州视觉定位培训

苏州视觉缺陷检测培训

苏州机器视觉模板匹配定位培训

苏州SCL编程培训

苏州PLC培训

苏州PLC编程培训

苏州三菱plc培训

苏州西门子plc培训

苏州三菱plc培训(FX3U/FX5U)

苏州西门子plc培训(s7-200smart/s7-1200/s7-1500)








立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络