通过ContextMenu获取RowIndex?

时间:2011-03-09 00:07:34

标签: winforms datagridview

我正在尝试获取行的rowindex,我右键单击该行以调用contextmenu。

DatagridView的属性contextmenu设置为此contextmenu。

有可能以某种简单的方式吗?

祝你好运

2 个答案:

答案 0 :(得分:1)

是的,您需要为DataGridView处理MouseDown事件,然后使用HitTest方法返回给定坐标的行和/或列索引。

例如:

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        DataGridView.HitTestInfo hit = dataGridView1.HitTest(e.X, e.Y);
        if (hit.Type == DataGridViewHitTestType.Cell)
        {
            Console.WriteLine(hit.RowIndex);
        }
    }
}

答案 1 :(得分:0)

我更改CellContextMenuStripNeeded事件中的选择,然后使用SelectedRows成员找到它。

private void dataGridView_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
{
    var Dgv = sender as DataGridView;
    if (Dgv != null)
    {
        // Change the selection to reflect the right-click
        Dgv.ClearSelection();
        Dgv.Rows[e.RowIndex].Selected = true;
    }
}

private void myToolStripMenuItem_Click(object sender, EventArgs e)
{
    // Now pick up the selection as we know this is the row we right-clicked on
    if (dataGridView.SelectedRows.Count > 0)
    {
        DoSomethingAmazing(dataGridView.SelectedRows[0]);
    }
}

这也可以突出显示您单击的行。