右键单击以选择dataGridView中的行

use*_*911 11 c# select datagridview row right-click

我需要在显示ContextMenu之前右键单击dataGridView中的一行,因为contextMenu是row-dependendt.

我试过这个:

 if (e.Button == MouseButtons.Right)
        {

            var hti = dataGrid.HitTest(e.X, e.Y);
            dataGrid.ClearSelection();
            dataGrid.Rows[hti.RowIndex].Selected = true;
        }
Run Code Online (Sandbox Code Playgroud)

要么:

private void dataGrid_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            dataGrid.Rows[e.RowIndex].Selected = true;
            dataGrid.Focus();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这有效,但是当我尝试读取dataGrid.Rows [CurrentRow.Index]时,我只看到左键单击选中的行而不是右键单击选中的行.

Gje*_*ema 27

尝试像这样设置当前单元格(这将设置选择上下文菜单项之前的CurrentRow属性DataGridView):

    private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            // Add this
            dataGrid.CurrentCell = dataGrid.Rows[e.RowIndex].Cells[e.ColumnIndex]; 
            // Can leave these here - doesn't hurt
            dataGrid.Rows[e.RowIndex].Selected = true; 
            dataGrid.Focus();
        }

    }
Run Code Online (Sandbox Code Playgroud)