由委托说明事件的由来2

2024-06-20 19:08
文章标签 说明 事件 委托

本文主要是介绍由委托说明事件的由来2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于以上两个不足,我们可以使用事件来解决问题。

1、即在用户控件的代码如下:

namespace WindowsFormsApplication1
{
    public delegate void OnShowInfoDelegate();//定义委托类型

    public partial class EventUserControl : UserControl
    {
        public event ShowInfoDelegate On_showinfo;//event是事件的关键字,在声明实例时使用关键字定义事件。
        public EventUserControl()
        {
            InitializeComponent();
        }
        int count = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            count++;
            if (count == 3)
            {
                On_showinfo();
                count = 0;
            }
           
        }

    }
}

那么在form窗体加载的时候也要为委托指定方法:

private void Form1_Load(object sender, EventArgs e)
        {
           

            this.eventUserControl1.On_showinfo += new ShowInfoDelegate(eventUserControl1_On_showinfo);
        }

与委托指定方法不同的是,此处只能通过+=来绑定方法,写好+=后双击Tab键,即可将所需的方法写出。然后修改方法中的内容,

 void eventUserControl1_On_showinfo()
        {
            MessageBox.Show("您连续三次点击了form1按钮");
        }

form2窗体中的代码一样。

//事件也是可以有多个的,可以为一个控件注册多个事件
            this.eventUserControl1.On_showinfo += new ShowInfoDelegate(Button_Click);
            this.eventUserControl1.On_showinfo += new ShowInfoDelegate(ShowInFo);
            this.eventUserControl1.On_showinfo += new ShowInfoDelegate(ShowInFo1);

 

如果再添加一个button,代码如下:

 private void button1_Click(object sender, EventArgs e)
        {
           

            //事件只能被注册,不能像委托一样直接调用,所以无法再外部直接调用事件。事件一定是被触发的,不能是被显示调用的。
            //this.eventUserControl1.On_showinfo();     (这样写会报错,因为事件只能写在+=或-=的左边)
            //可以使用-=删除控件的某个事件,但是不能使用=覆盖控件现有的所有事件
            this.eventUserControl1.On_showinfo -= ShowInFo1;
        }

 

这篇关于由委托说明事件的由来2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079001

相关文章

mybatis-plus QueryWrapper中or,and的使用及说明

《mybatis-plusQueryWrapper中or,and的使用及说明》使用MyBatisPlusQueryWrapper时,因同时添加角色权限固定条件和多字段模糊查询导致数据异常展示,排查发... 目录QueryWrapper中or,and使用列表中还要同时模糊查询多个字段经过排查这就导致只要whe

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

java中新生代和老生代的关系说明

《java中新生代和老生代的关系说明》:本文主要介绍java中新生代和老生代的关系说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、内存区域划分新生代老年代二、对象生命周期与晋升流程三、新生代与老年代的协作机制1. 跨代引用处理2. 动态年龄判定3. 空间分

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

Maven中的profiles使用及说明

《Maven中的profiles使用及说明》:本文主要介绍Maven中的profiles使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录主要用途定义 Profiles示例:多环境配置激活 Profiles示例:资源过滤示例:依赖管理总结Maven 中的