事件处理程序自定义参数 [英] EventHandler with custom arguments

查看:149
本文介绍了事件处理程序自定义参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在寻找一个答案关于谷歌一个小时,但我没有发现正是我要找的。

基本上,我有一个静态辅助类,有助于执行许多事情,我在我的应用程序经常做的。在这种情况下,我有一个名为创建一个给定TreeView控件的上下文菜单中的CreateDataContextMenu的方法。

 公共静态无效CreateDataContextMenu(表格母公司所有者的TreeView,string数据类型)
{...}

TreeView控件船东是,我将我的上下文菜单关联的控制



再后来就我添加一个Click事件为菜单项是这样的:

  menuItemFolder.Click + =新System.EventHandler(menu​​ItemFolder_Click); 



我这里的问题是,我想通过所有者和数据类型作为参数该menuItemFolder_Click事件



我试过如下:

  menuItemFolder。点击+ =新System.EventHandler(menu​​ItemFolder_Click(发件人,E,所有者的dataType)); 
(...)
私有静态无效menuItemFolder_Click(对象发件人,发送System.EventArgs,树视图所有者,string数据类型)
{...}

不过,这并不在所有的工作。这可能是很幼稚的我要那样做,但我米不是很舒服的事件处理程序呢。



这是我怎么能这样做吗?$ B任何想法$ b我的第一个猜测是,我需要创建我自己的事件处理程序为这种特殊情况下,我在与正确的方向前进?


解决方案

您应该创建一个调用这些额外的参数的方法的 lambda表达式

  menuItemFolder.Click + =(发件人,E)=> YourMethod(所有者,dataType的); 


I've been looking for an answer for about an hour on Google but I did not found exactly what I'm looking for.

Basically, I have a static Helper class that helps perform many things I do frequently in my App. In this case, I have a method named "CreateDataContextMenu" that creates a context menu on a given TreeView control.

public static void CreateDataContextMenu(Form parent, TreeView owner, string dataType)
{ ... }

TreeView owner is the control in which I will associate my context menu.

Then later on I add a Click event to a MenuItem like this:

menuItemFolder.Click += new System.EventHandler(menuItemFolder_Click);

The problem I have here is that I want to pass "owner" and "dataType" as arguments to the menuItemFolder_Click event.

I tried the following:

menuItemFolder.Click += new System.EventHandler(menuItemFolder_Click(sender,e,owner,dataType));
(...)
private static void menuItemFolder_Click(object sender, System.EventArgs e, Treeview owner, string dataType)
{...}

But it doesn't work at all. It might be very naive of me to do it that way but I"m not very comfortable with event handler yet.

Any idea on how I could do that? My first guess is that I need to create my own EventHandler for this specific case. Am I going in the right direction with that?

解决方案

You should create a lambda expression that calls a method with the extra parameters:

menuItemFolder.Click += (sender, e) => YourMethod(owner, dataType);

这篇关于事件处理程序自定义参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆