右键单击时,仅在datagridview中选择一个单元格

时间:2014-11-13 17:52:39

标签: c# datagridview mouseevent

在我的应用程序中,我有一个包含许多行的datagridview。我想在用户右键单击某个单元格时添加一个功能以弹出上下文菜单。但只有左键单击默认选择单元格的方法。所以我搜索了一下,我发现了这段代码

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {

            if (e.Button == MouseButtons.Right)
            {
                var hti = dataGridView1.HitTest(e.X, e.Y);
                dataGridView1.ClearSelection();
                dataGridView1.Rows[hti.RowIndex].Selected = true;
            }
        }

但是这个代码的问题是在我右键单击wholw行后将此代码放到mousedown之后。但我只想选择一个单元格

我该如何解决这个问题

1 个答案:

答案 0 :(得分:0)

要获得您想要的行为:

- 确保您拥有dataGridView1属性SelectionMode = CellSelectSelectionMode = RowHeaderSelect(取决于您是否希望用户能够选择整行)

- 对您的代码进行以下更改:

private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                var hti = dataGridView1.HitTest(e.X, e.Y);
                if (hti.RowIndex >= 0)
                {
                    dataGridView1.ClearSelection();
                    dataGridView1.CurrentCell = dataGridView1[hti.ColumnIndex, hti.RowIndex];
                }
            }
        }