C#基础:Winform桌面开发中自定义组件UI、属性及事件

1.新添加组件

2.制作组件界面

3.右键查看代码

编写如下代码,包含属性设计和事件设计

cs 复制代码
public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    // 一、自定义属性
    [Category("自定义属性"), Description("左边按钮文本")]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    public string LeftBtnText
    {
        get => button1.Text;
        set => button1.Text = value;
    }

    [Category("自定义属性"), Description("右边按钮文本")]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    public string RightBtnText
    {
        get => button2.Text;
        set => button2.Text = value;
    }

    //二、事件

    /// <summary>
    /// 左边按钮订阅了该事件(原生事件)
    /// </summary>
    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("左边按钮被点击了!");
    }

    [Category("自定义事件"), Description("点击右边按钮时触发")]
    public event EventHandler RightButtonClicked;

    /// <summary>
    /// 右边按钮订阅了该事件(自定义事件)
    /// </summary>
    private void button2_Click(object sender, EventArgs e)
    {
        // 返回一个string ,内容是"右边按钮被点击了!"

        // 要返回的内容
        string message = "右边按钮被点击了!";

        // 触发公开事件,把消息传给外部
        RightButtonClicked?.Invoke(message, EventArgs.Empty);
    }
}

4.重新编译整个类库

并且拖动这个自定义组件到Winform窗体上

5.使用自定义属性

6.使用自定义事件

编写如下代码

cs 复制代码
private void userControl11_RightButtonClicked(object sender, EventArgs e)
{
    var data = sender.ToString();
}

运行项目,点击右键时,能正常返回结果。

相关推荐
MC皮蛋侠客13 小时前
Redis 系列(三):底层实现(一)——对象系统、SDS 与 dict
数据库·redis·缓存
杜子不疼.13 小时前
不会SQL也能改数据库?我用NocoDB把MySQL变成了表格界面
数据库·sql·mysql
今天AI了吗13 小时前
AI辅助数据库工具链对比:从SQL优化到架构设计的主流方案评估
数据库·人工智能·sql
酷可达拉斯14 小时前
自动化运维-从零开始编写ansible剧本(二)
linux·运维·服务器·centos·自动化
淡海水14 小时前
15-07-YooAsset面试篇-Unity性能优化与内存管理
java·unity·面试·性能优化·c#·游戏引擎
蓝鸟197414 小时前
Oracle 19c JSON_OBJECT 完全实战指南|嵌套、多行多列数组合并、空值踩坑、医保报文落地
数据库·oracle·json_arrayagg·多行转json数组·sql实战踩坑·数据库json拼装·json_object
晴天1614 小时前
Agent 全栈学习笔记 1-Day14
数据库·笔记·学习
瀚高PG实验室14 小时前
几种因网络波动导致应用与数据库操作异常的现象
运维·网络·数据库·postgresql·瀚高数据库
崖边看雾14 小时前
同步上下文管理器规则
开发语言·数据库
.柒宇.14 小时前
运维常见面试题_02_数据库
运维·数据库·sql·面试