我想将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;
对你来说就足够了,因为你已经通过了代表