欢迎光临散文网 会员登陆 & 注册

[C#学习笔记14]控件的二次开发技术

2020-05-16 22:03 作者:技术龙的传人  | 我要投稿

控件的二次开发:以现有工具箱中的控件为基础,对其做再次封装,添加需要定义的功能控件

给文本框添加验证功能

    继承——类的开发者封装了相关功能,使用根据需要在此基础上扩展相关功能(属性、方法),A类继承B类,A具有B的所有功能(成员)

    特性:

        1、单根性——一个类只能继承一个父类,不能多重继承

        2、传递性——A-〉B    B-〉C   A同时具有B和C的功能

    普通继承——随时可以使用,避免相同代码重复

    继承多态——实现系统扩展性

新建类创建控件,新建组件类,添加errorProvider错误提示

//引入窗体的命名空间

using System.Windows.Forms;

using System.Text.RegularExpressions;//这则表达式使用的命名空间

namespace MyUIControl

{

    public partial class SuperTextBox : TextBox//自动生成的代码中Component->TextBox

    {

        public SuperTextBox()

        {

            InitializeComponent();

        }

        public SuperTextBox(IContainer container)

        {

            container.Add(this);

            InitializeComponent();

        }

        /// <summary>

        /// 非空验证

        /// </summary>

        /// <returns></returns>

        public int BeginCheckEmpty()

        {

            if (this.Text.Trim() == "")

            {

                this.errorProvider.SetError(this, "必填项不能为空!");

                return 0;

            }

            else

            {

                this.errorProvider.SetError(this, string.Empty);

                return 1;

            }

        }

        /// <summary>

        /// 使用正则表达式验证复杂数据

        /// </summary>

        /// <param name="regularExpress"></param>

        /// <param name="errorMsg"></param>

        /// <returns></returns>

        public int BeginCheckData(string regularExpress, string errorMsg)

        {

            if (BeginCheckEmpty() == 0) return 0;//如果为空,则直接返回

            //正则表达式验证(忽略大小写)

            Regex objRegex = new Regex(regularExpress, RegexOptions.IgnoreCase);

            if (!objRegex.IsMatch(this.Text.Trim()))

            {

                this.errorProvider.SetError(this, errorMsg);

                return 0;

            }

            else

            {

                this.errorProvider.SetError(this, string.Empty);//清除小圆点的错误提示

                return 1;

            }

        }

        //根据需要把常用的正则表达式验证封装到这里...

    }

}

窗口类显示

            int a = this.txtName.BeginCheckEmpty();

            int b = this.txtAge.BeginCheckpty();

            int c = this.txtAge.BeginCheckData(@"^[1-9]\d*$", "年龄必须是正整数!");

            int result = a * b * c;

            if (result != 0)

            {

                //封装对象,提交到数据库...

                MessageBox.Show("提交成功!", "信息提示");

            }

二次开发控件的引用

    将生成控件的.dll类库文件添加到工具箱中:工具箱空白处右键添加选项卡,选择工具箱项添加自己的控件库文件


控件:微软提供可视化方式操作的对象

自定义用户控件:用开发工具里面现有控件做二次开发

添加类库做用户控件——添加用户控件(进度条)——一个label去掉文本添加背景色绿色,一个复制label背景色为白色覆盖绿色的label,一个label显示百分比——添加属性高度、宽度、进度值可读写并加以约束







[C#学习笔记14]控件的二次开发技术的评论 (共 条)

分享到微博请遵守国家法律