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();
}

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

相关推荐
斑马1398 分钟前
Linux软件编程学习笔记(十二)——TCP并发服务器模型
java·服务器·网络
姜太小白22 分钟前
【Oracle】记排查sh脚本调用SQL执行卡顿的排查总结
数据库·sql·oracle
bgy666629 分钟前
MariaDB 数据库 基础详解
数据库·mariadb
自动化监测Learner32 分钟前
QGIS 把geojson数据导入 PostgreSQL/PostGIS 的完整流程
数据库·postgresql
虎虎(_ _)。゜zzZ1 小时前
Qdrant向量数据库工程实战
数据库·人工智能·大模型·向量数据库·rag·qdrant
C+ 安口木1 小时前
Alibaba Cloud Linux 3 服务器环境搭建实战记录
linux·运维·服务器
聚搜云——JuSouClouD1 小时前
杭州腾讯云代理商:腾讯云2核4G服务器够用吗?网站、API和开发测试怎么选
服务器·云计算·腾讯云
ZGG0031 小时前
线程池详解:从 7 大参数到生产避坑
java·数据库·后端
龙亘川1 小时前
数智赋能退役军人服务:V1.0 系统搭建全生命周期闭环服务体系
大数据·数据库·人工智能
zhangguojia72 小时前
权限弹窗点击允许的授权流程
运维·服务器·数据库