首页 > 代码库 > c#—事件
c#—事件
事件比委托多了event关键字,和+=
事件必须要触发
触发执行的关系
sender:表示触发这个事件的对象
e 就是执行这个事件所需要的数据资源
委托是在哪都可以调用,作用是:占位,在不知道将来要执行的具体方法的代码时可以先用一个委托变量来代替方法调用
事件的作用:和委托的变量一样,只是使用上有一些限定:只能在类的内部调用 通过+= -+来赋值
委托不安全,事件是一个类型安全的委托,因为只能在类的内部进行调用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace _08事件的本质 { class Program { static void Main(string[] args) { PlayMusic p = new PlayMusic("三生三世"); p.DelPlayOver += P_DelPlayOver; p.PlaySongs(); Console.ReadKey(); } private static void P_DelPlayOver(object sender, EventArgs e) { PlayMusic p = sender as PlayMusic; Console.WriteLine(p.Name + "over"); } } class PlayMusic { public event EventHandler DelPlayOver; public string Name { get; set; } public PlayMusic(string name) { this.Name = name; } public void PlaySongs() { Console.WriteLine("start{0}",this.Name); Thread.Sleep(3000); if (DelPlayOver != null) { EventArgs e = new EventArgs(); DelPlayOver(this, e); } } } }
在winform中我们可以自己去写事件,
如果按钮式自己动态生成的,则必须自己去写事件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace _09自己写事件 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Button btn = new Button(); btn.Location = new Point(154, 62); btn.Size = new Size(175, 23); btn.Text = "I am 动态的"; btn.Click += Btn_Click; btn.Click += Btn_Click1; this.Controls.Add(btn); } private void Btn_Click1(object sender, EventArgs e) { MessageBox.Show("我被点击了22222222"); } private void Btn_Click(object sender, EventArgs e) { MessageBox.Show("我被点击了11111111"); } } }
c#—事件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。