C#事件最简单的使用方法

事件可以说是C#中性价比极高的知识,那如何使用事件呢?

假如我想要点击窗口1中的按钮弹出窗口2,然后点击窗口2中的按钮使得原来的窗口1背景色改变

这里就会用到事件。

首先我们如果要使用事件就要对事件有清楚的认识。

举个例子,假如你是一个典狱长,你想要监视一个犯人,如果这个犯人靠近监狱的门就让你的小弟去警告他。

在这个例子里面,犯人就是被监视的类,事件就是犯人靠近监狱门,你就是事件触发后作出相应反应的类。

可以把事件看成灯的开关,当你按下灯的开关后,事件就被触发,灯泡则根据开关的状态选择亮起或熄灭。

回到刚开始的修改背景色问题,要怎么实现代码呢?

  1. 定义事件(相当于先在犯人的房间里装好摄像头)
  2. 监听事件
  3. 触发事件
  4. 响应事件

创建一个Form1,界面上添加一个按钮

再创建一个form2,然后在form1的按钮上创建form2show出来

form2定义一个事件(<>内部是事件抛出的信息,这里抛出了一个int对象和一个string对象,closeAction是事件的名字)Action表示有参数但是没有返回值的事件

        public Action<int,string> CloseAction;

form2中添加一个按钮,在按钮点击代码中添加下面这一句(触发(抛出)事件)

            CloseAction?.Invoke(3, "hello");

这一句代码中的?的作用是抛出之前检查有没有对象在监听,如果没有就不去触发,然后回到from1,在form2创建之后调用show()之前加一句代码,加完之后会变成这样

            Form2 form2 = new Form2();
            form2.CloseAction += doWhenForm2Closed;
            form2.Show();

然后你会发现这个doWhenForm2Closed报错,因为你没有定义它,相当于你现在装好了摄像头,也看到了自己想看的东西,但是你没定义好之后自己要做的事情(其实就是一个函数),所以在form1中添加这个函数,函数的返回值为void,参数的类型和数量与定义事件时对应(int,string)

        private void doWhenForm2Closed(int a,string b)
        {
            MessageBox.Show(a.ToString() + b);
        }

之后你启动程序,打开form2点击form2中的按钮就会发现doWhenForm2Closed中的代码被调用了,这就完成了一个完整的事件监听(C#中一共有两种事件Action与Func   ,Func的定义方法与Action几乎一样,但是Func是有返回值的会把<int,bool,string>中的最后一个数据类型作为返回值,下面为例子)

        public Func<string, int> CloseAction2;
            CloseAction2?.Invoke("hello2");
        private int doWhenForm2Closed2(string b)
        {
            MessageBox.Show(b);
            return 10;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值