传递按钮单击方法作为参数



我想将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)

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

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

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

从外观上看,DXMenuItem.Click只提供一个常规的EventArgs对象,而这样的对象只能与常规EventHandlers一起使用。

您正在尝试在处理程序中获取专用DevExpress.XtraBars.ItemClickEventArgs对象,但事件不提供它

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

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

item.Click += iDeactivate_ItemClick;
item.Click += cClickHandler;

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

相关内容

  • 没有找到相关文章

最新更新