在dll中创建事件并在Form中处理事件我使用以下代码创建了一个DLL。我已将此代码编译为DLL。namespaceDllEventTrigger{publicclassTrigger{publicdelegatevoidAlertEventHandler(Objectsender,AlertEventArgse);publicTrigger(){}publicvoidisRinging(){AlertEventArgsalertEventArgs=newAlertEventArgs();alertEventArgs=你好数据!";CallAlert(newobject(),alertEventArgs);}publiceventAlertEventHandlerCallAlert;}publicclassAlertEventArgs:EventArgs{#regionAlertEventArgs属性privatestring_uui=null;#endregion#region获取/设置属性publicstringuuitData{_uui;}set{_uui=value;}}#endregion}}现在我正在尝试使用此代码来处理此表单应用程序中此dll触发的事件。namespaceDLLTriggerReciever{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Triggertrigger=newTrigger();trigger.isRinging();trigger.CallAlert+=newTrigger.AlertEventHandler(trigger_CallAlert);}voidtrigger_CallAlert(objectsender,AlertEventArgse){label1.Text=e.uuiData;我的问题我不知道我哪里出错了。请建议。您需要在事件实际触发之前分配事件处理程序,否则代码将抛出NullReferenceException。trigger.CallAlert+=newTrigger.AlertEventHandler(trigger_CallAlert);trigger.isRinging();此外,建议首先检查是否分配了处理程序:varhandler=CallAlert;//局部变量防止出现竞争条件if(handler!=null){handler(this,alertEventArgs);正如@Gene所说,您需要在引发事件之前注册该事件。无论如何,最好通过检查空值来检查是否有人注册了您将要引发的事件。像这样:以上就是C#学习教程:在dll中创建事件并处理窗体中的事件,分享所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——if(this.CallAlert!=null)this.CallAlert(newobject(),alertEventArgs);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
