zoukankan      html  css  js  c++  java
  • 步步为营-27-事件

    1:先用委托演示

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace Event_PlayMusic
    {
        //声明委托
        public delegate string delPlay();
        class PlayMusic
        {
            //定义委托
            public delPlay del;
            private string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
    
            public PlayMusic(string name)
            {
                this.name = name;
            }
    
            public void PlaySongs()
            {
                Thread.Sleep(3000);
                if (del != null)
                {
                    del();
                }
            }
    
        }
    }
    Form
    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 Event_PlayMusic
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void btnPlaySong_Click(object sender, EventArgs e)
            {
                string songName = "小天狼";
                //事件--先触发后响应
                PlayMusic p = new PlayMusic(songName);
                MessageBox.Show("开始播放" + songName);
                p.del = () => { return "播放完毕"; };
                p.PlaySongs();
                MessageBox.Show(p.del());
             
            }
        }
    }
    Form

    效果
    将委托改为事件

    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 Event_PlayMusic
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void btnPlaySong_Click(object sender, EventArgs e)
            {
                string songName = "小天狼";
                //事件--先触发后响应
                PlayMusic p = new PlayMusic(songName);
                MessageBox.Show("开始播放" + songName);
                p.del += () => { return "播放完毕"; };            
               string str = p.PlaySongs();
               MessageBox.Show(str);
             
            }
        }
    }
    Form1
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    
    namespace Event_PlayMusic
    {
        //声明委托
        public delegate string delPlay();
        class PlayMusic
        {
            //定义委托
            public event delPlay del;
            private string name;
    
            public string Name
            {
                get { return name; }
                set { name = value; }
            }
    
            public PlayMusic(string name)
            {
                this.name = name;
            }
    
            public string PlaySongs()
            {
                Thread.Sleep(3000);
                if (del != null)
                {
                   return  del();
                }
    
                return "事件为空!";
            }
    
        }
    }
    PlayMusic
  • 相关阅读:
    Vue.js依赖收集
    Vue.js响应式原理
    详解.Net 如何上传自己的包到Nuget平台以及如何使用Nuget包管理器
    利用docker容器运行.net core webapi
    wpf mvvm datagrid DataGridTemplateColumn的绑定无效的可能原因之一!
    算法之A星算法(寻路)
    Python 学习日记 第一天
    Python 学习日记 第三天
    Python 学习日记 第二天
    再做一题,2013616更新
  • 原文地址:https://www.cnblogs.com/YK2012/p/6738723.html
Copyright © 2011-2022 走看看