C#学习教程:带有自定义参数的EventHandler基本上,我有一个静态帮助程序类可以帮助我在我的应用程序中频繁执行许多操作。在这种情况下,我有一个名为“CreateDataContextMenu”的方法,它在给定的TreeView控件上创建上下文菜单。publicstaticvoidCreateDataContextMenu(Formparent,TreeViewowner,stringdataType){...}TreeView所有者是我将关联上下文菜单的控件。然后我将Click事件添加到MenuItem,如下所示:menuItemFolder.Click+=newSystem.EventHandler(menuItemFolder_Click);我在这里遇到的问题是我想将“所有者”和“数据类型”作为参数传递给menuItemFolder_Click事件。我尝试了以下操作:menuItemFolder.Click+=newSystem.EventHandler(menuItemFolder_Click(sender,e,owner,dataType));(...)privatestaticvoidmenuItemFolder_Click(objectsender,System.EventArgse,Treeviewowner,stringdataType){...}但它根本不起作用。我这样做可能很天真,但我对事件处理程序还不是很满意。关于如何做到这一点的任何想法?我的第一个猜测是我需要为这个特定案例创建我自己的EventHandler。我正朝着正确的方向前进吗?您应该创建一个lambda表达式来调用带有额外参数的方法:menuItemFolder.Click+=(sender,e)=>YourMethod(owner,dataType);诚实的预录取:我没有尝试下面的代码。我猜是menuItemFolder.Click+=newSystem.EventHandler(menuItemFolder_Click(sender,e,owner,dataType));的原因不起作用是因为您实际上是将使用提供的参数调用menuItemFolder_Click()的结果传递给System.EventHandler()。您没有将指针传递给函数本身。尝试编写另一个实现menuItemFolder_Click()细节的函数。查看是否有类似privatevoidmenuItemFolder_Click_Helper(objectsender,EventArgse,objectOwner,objectDataType){//实现细节在这里}然后从menuItemFolder_Click()调用函数。我觉得最简单的代码是这样的:以上就是C#学习教程:自定义参数的EventHandler的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—EventHandlermyEvent=(sender,e)=>MyMethod(myParameter);//mydelegatemyButton.Click+=myEvent;//subscribeprivatevoidMyMethod(MyParameterTypemyParameter){//Dosomething//ifonlyonetimemyButton.Click-=myEvent;//unsubscribe}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
