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

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

相关推荐
用户71333585156241 分钟前
MySQL - EXPLAIN 执行计划
数据库
星栈独行4 分钟前
Node 接口该写同步还是异步?
服务器·开发语言·后端·程序人生·node.js
笑锝没心没肺6 分钟前
yum update 报错:GPG key retrieval failed: [Errno 14] HTTPS Error 404 - Not Found
linux·运维·服务器
汤永红21 分钟前
gtk-x11-2.0.so.0
linux·运维·服务器
小大宇25 分钟前
mongoDB dump技巧
数据库·mongodb
huijingjituan27 分钟前
三方聊天软件工具定制开发|打造企业级智能通讯平台
数据库·安全·阿里云·实时互动·腾讯云
公众号:fuwuqiBMC28 分钟前
(转自“服务器BMC”)服务器BMC芯片功能——网口
运维·服务器
zyplayer-doc30 分钟前
研发接口文档怎么长期维护:zyplayer-doc把API、Markdown和变更记录放进同一个知识库
大数据·数据库·人工智能·笔记·pdf·ocr
NineData31 分钟前
Oracle 卡住时先看阻塞源,ChatDBA 会先把锁链路理出来
数据库·oracle·ninedata·锁故障·锁等待·chatdba·锁阻塞
Macbethad44 分钟前
基于WPF与.NET的洁净厂房数据孪生平台技术方案:架构、实现与SEMI标准实践
数据库·系统架构