1.从工具箱中拖拽一个标准控件ContextMenuStrip到窗体中,该控件将出现在整个窗体的下方,重命名如contextPopMenu
2.点击控件右上方的小三角,添加成员子菜单MenuItem,注意顶端出现的名称contextPopMenu是整个控件的名称,不能删除,添加的MenuItem会出现在其下方
3.为添加的每个MenuItem设置name和text属性
4.在gdc(不是gdv)控件的ContextMenuStrip属性中选择刚才创建的控件contextPopMenu
5.添加gdv控件的PopupMenuShowing事件,处理点击右键后,弹出菜单前的处理机制
6.在PopupMenuShowing事件中可根据当前选中行状态,判断是否弹出菜单,如
if (!btAlterFlt.Enabled) //编辑状态解钩弹出菜单和控件的关系,实现右键无操作
gdcFlts.ContextMenuStrip = null;
else
gdcFlts.ContextMenuStrip = contextPopMenu;
MenuItemEnterBuffer.Text = $"加入缓冲区 ({buffer.Count})"; //改写菜单项名称
7.在contextPopMenu控件的ItemClicked事件进行处理
右键点击某菜单项后,gdv的焦点也会切换到当前行,可在此事件中通过FocusRowHandel获取,而后处理
if ((e.ClickedItem).Name == "MenuItemBack") //根据点击的菜单项进行处理
{...}
else if ((e.ClickedItem).Name == "MenuItemEnterBuffer")
{...}
来源:oschina
链接:https://my.oschina.net/u/4327596/blog/3426064