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事件的任务即可。

  • 相关阅读:
    RBF高斯径向基核函数【转】
    Libsvm自定义核函数【转】
    .Net对比Java分析
    码云提交
    webapi自定义Filter
    QT4.8.5 连接数据库(读写数据)
    axure8.0激活
    photo型的object转byte[]
    select拼接
    【转】easyui $.message.alert 点击右上角的关闭按钮时,不执行定义的回调函数
  • 原文地址:https://www.cnblogs.com/liweis/p/14197788.html
Copyright © 2011-2022 走看看