为自定义控件添加自定义事件

事件,委托,总是看起来有点绕,不过本文不介绍这些,只说说如何为自定义控件添加自定义事件。

本文所说的自定义控件,非继承其他现有Microsoft控件或者组合控件,而是完全继承UserControl的 东西。

既然不是继承自其他现有控件或者控件组合,在特定需求下,有添加自定义事件的可能性,或者对继 承自UserControl而得到的事件进行些许扩展,以期以简便的方式得到更丰富的信息等等。

下面简单介绍2个例子,有用之人作为参考,大拿级别的,ignore吧。

例1. 添加完全自定义事件。

需求:

假设客户端(指添加了自定义控件的窗体等等)想知道用户是否在控件上按下的Shift键(当然,可以 通过KeyPress之类的事件来判断,没必要再自己整个事件,例子只是个例子),控件作者想通过一个特殊 的方式来进行判断,这就可以选择自定义事件。

好吧,起个名字,叫Custom,需要客户端在触发Custom时得到一个布尔属性Flag来判断用户是否按下 Shift。

按部就班:

(1)创建事件

        // 创建事件
        public event CustomEventHandler Custom;

有问题,CustomEventHandler是什么,当然,这里需要一个委托,于是还是搞定这个委托

(2)定义委托

    // 定义委托
    public delegate void CustomEventHandler(object sender, CustomEventArgs e);

CustomEventHandler搞定了,又有新问题:CustomEventArgs是啥,其实需要CustomEventArgs来获得 你需要的数据,CustomEventHandler,于是还要定义个CustomEventArgs(这个东西必须继承自 System.EventArgs),在CustomEventArgs里面定义需要的数据属性:Flag

(3)定义EventArgs

    // 自定义EventArgs,并添加自定义属性【Flag】
    public sealed class CustomEventArgs : EventArgs
    {
        private bool testFlag;
        public CustomEventArgs(bool testFlag)
        {
            this.testFlag = testFlag;
        }
        public bool Flag
        {
            get { return testFlag; }
        }
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索控件
, 事件
, 属性
, 委托
, public
, 自定义 amear
, 自定义uidatepicker
, 自定义组合控件问题
, 自定义viewtextviewandroid
, 自定义popupwindowandroid
, 自定义xmlandroid
, 自定义控件 
, #自定义控件
例子
c 自定义控件添加事件、c 自定义控件 事件、wpf 自定义控件 事件、.net 自定义控件 事件、c 添加自定义控件,以便于您获取更多的相关知识。

时间: 2024-09-18 21:27:43

为自定义控件添加自定义事件的相关文章

自定义view-安卓自定义控件,事件在屏幕上的范围

问题描述 安卓自定义控件,事件在屏幕上的范围 我把我自定义的view放在屏幕上之后显示为正常大小,但是我给view设置完点击事件之后点屏幕任意地方都会触发,如何控制到像button一样,控件在哪,在那里点击才会触发事件 解决方案 你可以试试,将View设置为不可悲获取焦点,然后重新给一个其他的控件.进行你想要设置的功能,可以让你先加的这个控件背景透明.

c#自定义控件中事件的处理

 using System;   using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ClientControl { //1.定义委托 public delegate void NewsClickEventHandle(objec

WPF 给控件添加自定义事件

问题描述 在做一个聊天程序如何在好友发消息过来,让<Image>晃动?感觉要用自定义事件,其他方法也行<ListBoxName="userList"Grid.Column="1"ScrollViewer.VerticalScrollBarVisibility="Auto"MouseDoubleClick="userList_MouseDoubleClick"><ListBox.ItemTempla

ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事 件是行不通.如果大家开发的是WinForm中的事件,之前的定义可能没有什么大的问题,只是在效率方法 欠考虑而且,还是可以运行的. 下面我们就回到ASP.NET中的事件. 大家也许看了我们之前定义的事件,确实,事件一般是那么定义的,但是那样定义事件后的,运行起 来的效率不搞,因为那样定义事件后,编译器在编译事件代码的时候,会自动的为我们加入很多多线程安 全的代码,就是说,虽然我们只是定义几行代码,大但

关于自定义控件事件问题!求大神们。

问题描述 写了自定义控件,其中有个ButtonButtonFrist,想问下ButtonFristClick事件如何触发自定义控件ButtonClick事件.写了以下.//1.先定义ButtonClick类publicclassButtonClickEventArgs:EventArgs{privatestringas_PageType;publicstringPageType{get{returnas_PageType;}}publicButtonClickEventArgs(stringPa

关于自定义控件事件问题!

问题描述 写了自定义控件,其中有个ButtonButtonFrist,想问下ButtonFristClick事件如何触发自定义控件ButtonClick事件.写了以下.//1.先定义ButtonClick类publicclassButtonClickEventArgs:EventArgs{privatestringas_PageType;publicstringPageType{get{returnas_PageType;}}publicButtonClickEventArgs(stringPa

一个usercontrol如何能从这个userctrl上向外部发出一个事件

问题描述 定义一个usercontrol如果上面放一个button控件,如何能在使用这个usercontrol的窗口上捕捉到button被点击的事件呢??以前使用pb等语言有类似功能,不知怎么实现 解决方案 解决方案二:(1)在自定义控件中添加自定义事件publiceventEventHandlerButtonClick=null; (2)在控件构造函数中添加button.click事件声明publicUserControlButton(){InitializeComponent();butto

JavaScript使用自定义事件实现简单的模块化开发

WEB前端最常见驱动方式就是事件了, 所有交互等等都是通过事件,前端的常见事件有:     UI事件: 焦点事件: 鼠标事件: 滚轮事件: 文本事件: 键盘事件: 变动事件: 现在网页上有一个输入框, 如果我们要对用户输入的字符串进行过滤, 或者是截获用户的输入进行处理的话, 我们要肿么办  同学们纷纷举手说:"老师,我知道,是使用添加事件", 老师也很欣慰地点了点头, 这群家伙真的是越来越聪明了, 老师又问了"如果要取消用户的输入怎么办了", 坐在最前排眼睛最小的

JavaScript使用自定义事件实现简单的模...

 WEB前端最常见驱动方式就是事件了, 所有交互等等都是通过事件,前端的常见事件有: UI事件: 焦点事件: 鼠标事件: 滚轮事件: 文本事件: 键盘事件: 变动事件: 现在网页上有一个输入框, 如果我们要对用户输入的字符串进行过滤, 或者是截获用户的输入进行处理的话, 我们要肿么办 同学们纷纷举手说:"老师,我知道,是使用添加事件", 老师也很欣慰地点了点头, 这群家伙真的是越来越聪明了, 老师又问了"如果要取消用户的输入怎么办了", 坐在最前排眼睛最小的同学急忙