• 用户控件中多控件自定义单击事件


    问题描述

    这个题目听上去有点绕,不知道该如何描述。如下图,根据需求自定义了一个用户控件(UserControl),除了用户控件本身外,上面还有一个标签控件(labelControl)和图片控件(pictureEdit)。

    它们三者各自有一个单击事件(Click),现用户控件的单击Click事件只能在"非控件区"触发有效,显示我们需要在用户控件所有位置单击都触发单击事件。

    解决方案

    最容易想到的方法是让用户控件的上所有控件都去注册同一个单击事件,这是最简单的方法也是"笨"的方法。正确的方式是在用户控件自定义一个事件来实现。

    首先,在用户控件内定义一个用户控件事件(ButtonClick),方便用户调用实现:

    public event EventHandler ButtonClick;
    

    再在用户控件的构造函数中实现三个事件,并绑定到同一事件中:

    this.Click += BigButton_Click;
    this.pictureEdit1.Click += BigButton_Click;
    this.labelControl1.Click += BigButton_Click;
    

    BigButton_Click中触发它的Click事件:

    private void BigButton_Click(object sender, EventArgs e)
    {
        ButtonClick?.Invoke(this, e);
    }
    

    最后用户在使用用户控件时,注册并实现用户控件的ButtonClick事件,用ButtonClick事件完成原来Click事件的任务即可。

  • 相关阅读:
    过滤器
    包装 request Demo
    分页思路
    导出数据库中所有数据到Excle中
    负载均衡集群中的session解决方案
    python 自动化之路 day 01 人生若只如初见
    python 自动化之路 day 00 目录
    切割TOMCAT日志
    Java进程CPU使用率高排查
    使用socket方式连接Nginx优化php-fpm性能
  • 原文地址:https://www.cnblogs.com/liweis/p/14197788.html
Copyright © 2020-2023  润新知