带有ContextMenuStrip的DataGridViewColumn - 我如何*总是*获取相关的单元格/行?

时间:2011-05-02 13:39:12

标签: winforms datagridview contextmenu

我有一个DataGridViewColumn,在设计器中分配了ContextMenuStrip。在菜单条项的单击事件的处理程序中,我需要获取包含生成上下文菜单的单元格的行的行索引。只要在显示上下文菜单之前通过左键单击选择单元格,DataGridView.CurrentCell.RowIndex就可以正常工作。但是,当右键单击单元格而不先选择它时,RowIndex始终为0.我已尝试查找上下文菜单条项的父项并将链处理到单元格/列,但{{{ 1}}总是为空。有没有办法我可以不使用菜单的位置这样做?如果我必须使用位置,是否有一种万无一失的方法呢?

1 个答案:

答案 0 :(得分:1)

单击鼠标右键不是调用上下文菜单的唯一方法。 Shift + F10或上下文菜单键也会调用它。从键盘调用上下文菜单不会给出X,Y坐标,因此了解菜单上下文应该是什么的唯一方法是“当前所选项目”的概念。

我所做的是覆盖MouseDown事件,如果按下右键,则选择鼠标下的单元格。