欢迎光临
我们一直在努力

C#WinForm 动态创建控件笔记(Label / TextBox / Button 手写控件 + 事件绑定)

一、动态创建控件 核心原理

1. 必背四步流程

WinForm 支持纯代码动态创建控件,所有控件创建统一遵循四步:

  • 实例化对象:new 控件()

  • 设置控件属性:文本、大小、位置、颜色、字体等

  • 绑定控件事件:Lambda表达式 / 普通方法绑定

  • 加载到窗体:this.Controls.Add(控件) (不添加不显示)

  • 2. 基础核心知识点

    • 所有控件本质都是C#类,可以new实例化

    • 动态控件仅存在内存中,必须Add加入窗体集合才可可视化

    • 控件事件支持多播委托:+=绑定、-=解绑


    二、Label 标签控件(代码拆分 + 独立属性 + 特色功能)

    1. 分步拆解代码(最细拆分)

    将 Label 创建逻辑拆分为:实例化 → 样式属性 → 图片属性 → 加载显示

    // 1. 实例化控件对象
    Label l1 = new Label();

    // 2. 设置文本、颜色、尺寸、位置基础属性
    l1.Text = "good good study";
    l1.ForeColor = Color.White;
    l1.BackColor = Color.FromArgb(255, 0, 0);
    l1.Size = new Size(100, 20);
    l1.TextAlign = ContentAlignment.MiddleCenter;
    l1.Location = new Point(200, 0);

    // 3. 设置图片资源属性
    l1.Image = Properties.Resources.background;

    // 4. 添加到窗体显示
    this.Controls.Add(l1);

    2. Label 全套独立属性表

    • Text:标签展示文本内容

    • ForeColor:字体颜色,支持系统预设颜色

    • BackColor:背景颜色,支持ARGB带透明自定义颜色

    • Size:控件宽高尺寸,new Size(宽,高)

    • TextAlign:文本对齐方式,支持居中、居左、居右

    • Location:窗体坐标位置,new Point(X,Y)

    • Image:标签背景图片

    3. 特色功能详解

    (1)颜色两种赋值方式
    • 系统预设颜色:Color.Red / Color.White

    • 自定义ARGB颜色:Color.FromArgb(透明度,红,绿,蓝)

    • 透明度区间:0(完全透明)~255(完全不透明)

    (2)图片三种加载方式
    • 绝对路径:本地固定路径,移植性差

    • 相对路径:../ 返回上级目录,适配Debug运行目录

    • 项目资源读取(推荐):Properties.Resources.图片名,无路径报错、可打包发布


    三、TextBox 文本框控件(代码拆分 + 属性 + 方法 + 事件)

    1. 分步拆解代码

    拆分逻辑:字体定义 → 控件实例化赋值 → 方法调用 → 事件绑定 → 加载窗体

    // 1. 实例化控件对象
    Label l1 = new Label();

    // 2. 设置文本、颜色、尺寸、位置基础属性
    l1.Text = "good good study";
    l1.ForeColor = Color.White;
    l1.BackColor = Color.FromArgb(255, 0, 0);
    l1.Size = new Size(100, 20);
    l1.TextAlign = ContentAlignment.MiddleCenter;
    l1.Location = new Point(200, 0);

    // 3. 设置图片资源属性
    l1.Image = Properties.Resources.background;

    // 4. 添加到窗体显示
    this.Controls.Add(l1);

    2. TextBox 专属独立属性

    • Text:默认输入文本内容

    • Font:自定义字体、字号、样式(加粗/斜体)

    • Size:文本框宽高尺寸

    • Location:窗体XY坐标位置

    • TextAlign:文本水平对齐方式

    • MaxLength:限制最大输入字符数

    • PasswordChar:掩码字符,实现密码隐藏效果

    3. TextBox 专属独立方法

    • Clear():清空文本框所有内容

    • Focus():让文本框主动获取焦点,默认激活输入状态

    4. TextChanged 独立事件

    触发时机:文本框内容每一次修改、输入、删除瞬间触发

    常用场景:实时数据校验、实时字数统计、实时输入监听


    四、Button 按钮控件(代码拆分 + 属性 + 多播事件 + sender)

    1. 分步拆解代码

    拆分逻辑:实例化属性赋值 → Lambda事件绑定 → 普通方法绑定 → 加载窗体

    // 1. 实例化按钮并设置基础属性
    Button btn = new Button()
    {
    Text = "OK",
    Location = new Point(30, 100)
    };

    // 2. 绑定Lambda点击事件
    btn.Click += (sender, e) =>
    {
    MessageBox.Show("我点击btn");
    };

    // 3. 绑定普通方法事件(多播叠加)
    btn.Click += button1_Click;

    // 4. 解绑事件(可选)
    // btn.Click -= button1_Click;

    // 5. 加载到窗体显示
    this.Controls.Add(btn);

    2. Button 专属独立属性

    • Text:按钮展示文字

    • Location:按钮在窗体的坐标位置

    • Enabled:按钮状态,true启用、false禁用置灰

    3. 按钮核心事件(Click)

    按钮默认核心事件:Click 单击事件

    支持多播绑定:可同时绑定多个方法,按绑定顺序执行

    4. sender 万能参数(独立考点)

    private void button1_Click(object sender, EventArgs e)
    {
    // sender:代表当前触发事件的控件对象
    label1.Text = ((Button)sender).Text;
    }

    • 作用:多个按钮共用同一个点击方法

    • 原理:通过sender强转控件类型,识别当前点击的按钮

    • 优势:极大减少冗余代码,代码高度复用


    五、控件事件两种写法(独立总结)

  • 设计器绑定:界面双击控件,自动生成默认事件方法(仅拖拽控件可用)

  • 代码动态绑定:控件.事件 += 方法/Lambda(动态控件唯一绑定方式)


  • 六、自定义控件事件(拓展复习)

    除系统自带事件,可通过委托+事件自定义控件回调事件

    // 1. 定义委托
    public delegate void MyDel(int a);
    // 2. 定义事件
    public event MyDel Change;

    // 3. 绑定事件 + 触发事件
    Change += (a) =>
    {
    MessageBox.Show(a + "sssss");
    };
    Change.Invoke(10);


    七、满分考点总结

    • 动态控件四步:new实例 → 设属性 → 绑事件 → Add加载

    • Label 重点:ARGB透明颜色、图片三种加载方式

    • TextBox 重点:密码掩码、字数限制、文本实时监听

    • Button 重点:多播事件、sender参数复用事件方法

    • 动态控件必须Add,否则内存存在、界面不显示

    八、统一背诵口诀

    • 动态控件四步走,新建属性事件凑

    • 不Add不显示界面,内存存在看不见

    • 三色ARGB可透明,资源图片最稳定

    • 文本变时触发事件,按钮sender万能用

    • 多播事件可叠加,加减符号控执行

    赞(0)
    未经允许不得转载:171主机测评 » C#WinForm 动态创建控件笔记(Label / TextBox / Button 手写控件 + 事件绑定)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址