我是靠谱客的博主 多情寒风,最近开发中收集的这篇文章主要介绍定义事件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

定义简单事件

定义事件前必须先定义用于该事件的委托类型

public delegate void simDelegate(string Name);

定义了委托后,就可以把事件本身定义为一个类成员

public class SimpleEve
{
    public event simDelegate simEve;

订阅方法,前提是方法的参数必须与事件的委托类型的参数相一致

simEve += simpleTest.Texts;
simEve += simpleTest.Text2;

引发事件,必须在该类中引发,在外部只能订阅,引发时要注意是否有参数

simEve(name);

整体代码:

public delegate void simDelegate(string Name);
public class SimpleEve
{
    public event simDelegate simEve;
    private string name;
    public SimpleEve(string newName)
        => this.name = newName;
    public void Start()=> simEve(name);//引发事件
       
}
public class SimpleTest
{
    public void Texts(string name)
        => Console.WriteLine($"6666{name}");
    public void Text2(string name)
        => Console.WriteLine($"{name}6666");

}
static void Main(string[] args)
{
    SimpleEve simpleEve = new SimpleEve("TT");
    SimpleTest simpleTest = new SimpleTest();
    simpleEve.simEve += simpleTest.Texts;
    simpleEve.simEve += simpleTest.Text2;
    simpleEve.Start();
    Console.ReadKey();
}

多用途事件

class DelegateTest
{
    public event EventHandler eventTest;  //创建多用途事件
    private EventArgsTest eventArgsTest; 
    public DelegateTest()
    {
        eventArgsTest = new EventArgsTest("TT");
        eventTest += new EventHandler(StrTest.Run);
    }
    public void Start()
        => eventTest(this, eventArgsTest); //引发事件
}
class StrTest
{public static void Run(object source, EventArgs e)  //委托参数
    {
        string test = $"asfsfagsg sa {((EventArgsTest)e).Message} sad "; //多态性
        Console.Write(test);
    }
}
class EventArgsTest:EventArgs
{
    private string message;
    public string Message { get => message; }
    public EventArgsTest() => message = "no message";
    public EventArgsTest(string newMessage)
        => message = newMessage;
}
DelegateTest delegateTest = new DelegateTest();
delegateTest.Start();

多用途事件有两个参数:

object source ------ 引发事件的对象的引用

ElapsedEventArgs e ------- 由事件传送的参数

source是指定生成事件的对象

EventArgs为参数

 

转载于:https://www.cnblogs.com/xt112233/p/10199987.html

最后

以上就是多情寒风为你收集整理的定义事件的全部内容,希望文章能够帮你解决定义事件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部