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

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

相关推荐
GBASE18 小时前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr1 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩2 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
SelectDB4 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶4 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵4 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql