我想将buttonClick方法作为参数传递给函数: 我们有
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,每次使用不同的方法
答案 0 :(得分:3)
从表面上看,DXMenuItem.Click
只提供常规的EventArgs
对象,因此只能使用常规EventHandlers
。
您正在尝试在处理程序中获取专门的DevExpress.XtraBars.ItemClickEventArgs
对象,而的事件不会提供它。
我不认为你想做的事情是可能的。您需要减少处理程序,因此它只需要常规EventArgs
,或者您需要找到Click
事件提供ItemClickEventArgs
的按钮类型。
答案 1 :(得分:0)
如果签名与事件所需的委托相匹配,您可以直接为方法指定方法名称
item.Click += iDeactivate_ItemClick;
答案 2 :(得分:0)
item.Click += cClickHandler;
对你来说已经足够了,因为你已经通过了委托