zoukankan      html  css  js  c++  java
  • 用户控件中多控件自定义单击事件

    问题描述

    这个题目听上去有点绕,不知道该如何描述。如下图,根据需求自定义了一个用户控件(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事件的任务即可。

  • 相关阅读:
    Oracle删除用户和表空间
    PLSQL配置教程
    Oracle 11g client 安装
    oracle 11g 安装
    oracle创建用户空间、导出、导入dmp备份文件方法
    c#关键字
    c#运算符重载
    每天一个Linux命令之date
    linux之2>&1
    每天一个Linux命令之crontab
  • 原文地址:https://www.cnblogs.com/liweis/p/14197788.html
Copyright © 2011-2022 走看看