c#在程序中定义和使用自定义事件方法总结
C#在程序中定义和使用自定义事件可以分为以下几个步骤:
步骤1:在类中定义事件
usingSystem;
publicclassTestClass
{
//....
publiceventEventHandlerTestEvent
}
步骤2:定义事件参数
注意:事件参数类TestEventArgs继承自System.EventArgs
usingSystem;
publicclassTestEventArgs:EventArgs
{
publicTestEventArgs():base(){}
publicstringMessage{get;set;}
}
步骤3:在TestClass引发事件
publicclassTestClass
{
//这个方法引发事件
publicvoidRaiseTestEvent(stringmessage)
{
if(TestEvent==null)return;
TestEvent(this,newTestEventArgs{Message=message});
}
publiceventEventHandlerTestEvent;
}
步骤4:使用事件
classProgram
{
staticvoidMain(string[]args)
{
TestClasstc=newTestClass();
//挂接事件处理方法
tc.TestEvent+=Tc_TestEvent;
Console.WriteLine("按任意键引发事件");
Console.ReadKey();
//引发事件
tc.RaiseTestEvent("通过事件参数传递的字符串");
Console.WriteLine("按任意键退出");
Console.ReadKey();
}
privatestaticvoidTc_TestEvent(objectsender,EventArgse)
{
//将事件参数强制转换为TestEventArgs
TestEventArgste=(TestEventArgs)e;
//显示事件参数中的Message
Console.WriteLine(te.Message);
}
}
完整的程序如下
usingSystem;
publicclassTestClass
{
publicvoidRaiseTestEvent(stringmessage)
{
if(TestEvent==null)return;
TestEvent(this,newTestEventArgs{Message=message});
}
publiceventEventHandlerTestEvent;
}
publicclassTestEventArgs:EventArgs
{
publicTestEventArgs():base(){}
publicstringMessage{get;set;}
}
classProgram
{
staticvoidMain(string[]args)
{
TestClasstc=newTestClass();
tc.TestEvent+=Tc_TestEvent;
Console.WriteLine("按任意键引发事件");
Console.ReadKey();
tc.RaiseTestEvent("通过事件参数传递的字符串");
Console.WriteLine("按任意键退出");
Console.ReadKey();
}
privatestaticvoidTc_TestEvent(objectsender,EventArgse)
{
TestEventArgste=(TestEventArgs)e;
Console.WriteLine(te.Message);
}
}