0

我想将 buttonClick 方法作为参数传递给函数:我们有

按钮点击:

private void iDeactivate_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
 ...
}

功能:

private void AddItemToPopUpMenu(GridViewMenu cMenu, string cItemCaption, EventHandler cClickHandler, Image cItemImage, bool cItemBeginGroup)
{
    DXMenuItem item = new DXMenuItem();
    item.Caption = cItemCaption;
    item.Click += new EventHandler(cClickHandler); //problem there
    item.Image = cItemImage;
    item.BeginGroup = cItemBeginGroup;
    cMenu.Items.Add(item);
}

那么有人可以提出解决方案吗?

试过:

AddItemToPopUpMenu(cMenu, iDeaActive.Caption, iDeactivate_ItemClick, null, false);

并将函数参数更改为:

private void AddItemToPopUpMenu(GridViewMenu cMenu, string cItemCaption, EventHandler<ItemClickEventArgs> cClickHandler, Image cItemImage, bool cItemBeginGroup)

但是后来我在标记“那里的问题”的代码中出错了

那么是否可以在不更改参数的情况下传递 buttonClick 方法?

编辑:当我看到一些错误的答案时,应该说我必须作为参数传递,因为 AddItemToPopUpMenu 被多次调用,每次都使用不同的方法

4

3 回答 3

3

从外观上看,DXMenuItem.Click仅提供常规EventArgs对象,因此只能与常规对象一起使用EventHandlers

你试图DevExpress.XtraBars.ItemClickEventArgs在你的处理程序中获取一个专门的对象,而事件只是不提供它

我认为您尝试做的事情是不可能的。你要么需要减少你的处理程序,所以它只需要一个常规的EventArgs,或者你需要找到一种类型的按钮,它的Click事件提供一个ItemClickEventArgs.

于 2012-10-11T08:45:37.137 回答
0

您可以将方法名称直接分配给您的事件,前提是签名与事件所需的委托匹配

item.Click += iDeactivate_ItemClick;
于 2012-10-11T08:46:10.807 回答
0
item.Click += cClickHandler;

因为你已经通过了代表,所以对你来说足够了

于 2012-10-11T08:47:42.263 回答