C#在程序中定义和使用自定义事件可以分为以下几个步骤:
步骤1:在类中定义事件
using System;
public class TestClass
{
//....
public event EventHandler TestEvent
}
步骤2:定义事件参数
注意:事件参数类TestEventArgs继承自System.EventArgs
using System;
public class TestEventArgs : EventArgs
{
public TestEventArgs() : base() { }
public string Message { get; set; }
}
步骤3:在TestClass 引发事件
public class TestClass
{
// 这个方法引发事件
public void RaiseTestEvent(string message)
{
if (TestEvent == null) return;
TestEvent(this, new TestEventArgs { Message = message });
}
public event EventHandler TestEvent;
}
步骤4:使用事件
class Program
{
static void Main(string[] args)
{
TestClass tc = new TestClass();
// 挂接事件处理方法
tc.TestEvent += Tc_TestEvent;
Console.WriteLine("按任意键引发事件");
Console.ReadKey();
// 引发事件
tc.RaiseTestEvent("通过事件参数传递的字符串");
Console.WriteLine("按任意键退出");
Console.ReadKey();
}
private static void Tc_TestEvent(object sender, EventArgs e)
{
// 将事件参数强制转换为TestEventArgs
TestEventArgs te = (TestEventArgs)e;
// 显示事件参数中的Message
Console.WriteLine(te.Message);
}
}
完整的程序如下
using System;
public class TestClass
{
public void RaiseTestEvent(string message)
{
if (TestEvent == null) return;
TestEvent(this, new TestEventArgs { Message = message });
}
public event EventHandler TestEvent;
}
public class TestEventArgs : EventArgs
{
public TestEventArgs() : base() { }
public string Message { get; set; }
}
class Program
{
static void Main(string[] args)
{
TestClass tc = new TestClass();
tc.TestEvent += Tc_TestEvent;
Console.WriteLine("按任意键引发事件");
Console.ReadKey();
tc.RaiseTestEvent("通过事件参数传递的字符串");
Console.WriteLine("按任意键退出");
Console.ReadKey();
}
private static void Tc_TestEvent(object sender, EventArgs e)
{
TestEventArgs te = (TestEventArgs)e;
Console.WriteLine(te.Message);
}
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。