码迷,mamicode.com
首页 > Windows程序 > 详细

c#—事件

时间:2017-03-05 19:15:45      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:通过   pac   方法调用   click   write   执行   reading   动态   window   

事件比委托多了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#—事件

标签:通过   pac   方法调用   click   write   执行   reading   动态   window   

原文地址:http://www.cnblogs.com/lili-work/p/6506074.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!