当有多个按钮需要操作时候,通常会采用数组的形式进行排列,但使用contentMenuStrip时候,通常只定义一个就够了,但是这个时候我们很难通过sender获取到点击的索引。
尝试了两种方式:
- 直接点击新增加的item,生成点击事件,然后通过事件中的sender寻找,通过这种方式无法找到; 显示无法转换;
- 通过注册事件来处理(也是看到网上其他方案参考加改进)
void LoadMenustrip()
{
rightMenu = new UIContextMenuStrip();
rightMenu.Items.Add("发送托盘");
rightMenu.Items.Add("下发流程");
rightMenu.Items.Add("刷新设备");
rightMenu.Items.Add("清空架台");
rightMenu.ItemClicked += new ToolStripItemClickedEventHandler(rightMeu_ItemClicked);
}
void rightMeu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
Label lbx = ((Label)((ContextMenuStrip)sender).SourceControl);
int index = Array.IndexOf(lableInfoArray, lbx);
}
- 初始化加载右键菜单;
- 注册item点击事件;
- 循环绑定给数组,也就是数组的contenMenuStrip循环设定程当前菜单;(此处可能需要全局处理)
- 从点击事件中获取索引就OK;