Categories
C#

C# 自定义windows form控件

所有C# 自定义windows form 控件继承自 UserControl 在design中设计界面 在partial class中定义自定义属性和行为

注解解析

 [Category("Text"),
         Browsable(true),
         DefaultValue(typeof(Image), null),
         Description("图标")]
        public Image Icon { get; set; }

Category 对应分类

Browsable 对应是否能看到

然后还有默认值和描述

这个注解使代码和 设计界面能连通

组件生命周期

form 打开:
•    Control.HandleCreated
•    Control.BindingContextChanged
•    Form.Load
•    Control.VisibleChanged
•    Form.Activated
•    Form.Shown
from 关闭:
•    Form.Closing
•    Form.FormClosing
•    Form.Closed
•    Form.FormClosed
•    Form.Deactivate

control ,change focus:(使用 tab ,shift + tab等等,或是调用Select,SelectNextControl,或是使用当前form的ActiveControl)
•    Enter
•    GotFocus
•    Leave
•    Validating
•    Validated
•    LostFocus

control ,change focus:(使用鼠标,或是通过调用Focus方法)
•    Enter
•    GotFocus
•    LostFocus
•    Leave
•    Validating
•    Validated

特别是load 事件 可以再InitializeComponent 绑定加载事件 然后 添加渲染后回调操作

添加自定义事件


        public delegate void PageChangeDelegate();//

        /// <summary>
        /// 当前页改变时发生的事件
        /// </summary>
        [Description("当前页改变时发生的事件"), Category("分页设置")]
        public event PageChangeDelegate PageChanged;

在具体的业务流程中调用

 private void btnFirst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            //设置当前页
            CurrentPage = 1;

            //设置上一页、下一页是否可用以及当前页按钮字体颜色
            SetBtnPrePageAndBtnNextPage();

            //调用注册事件
            if (PageChanged != null) PageChanged();
        }