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

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

相关推荐
hz567894 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC4 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday4 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
优橙教育4 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
半杯咖啡半行码4 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
AIgorithmGEEK4 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2084 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)4 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6254 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
小米里的大麦4 小时前
16 MySQL 事务
数据库·mysql