为什么我没有在DataGridViewControl中获得预期的DataGridViewHitTestType.Cell?

时间:2015-12-29 22:43:02

标签: c# datagridview

每当我点击DataGridView控件中的单元格时,我都无法获得预期的DataGridViewHitTestType.Cell命中。当我点击第一列中的单元格时,我搜索无法获得有关我为什么而不是DataGridViewHitTestType.ColumnHeader点击的线索,而当我点击其余两列中的单元格时{I} DataGridViewHitTestType.TopLeftHeader

我的控件有三列,其SelectionMode设置为CellSelect。以下是我的代码:

private void dgvYears_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
  if (e.Button == MouseButtons.Left)
  {
     DataGridView.HitTestInfo hit = dgvYears.HitTest(e.X, e.Y);
     if (hit.Type == DataGridViewHitTestType.Cell)
     {
       //What I want to do here....
     }
  }
}

1 个答案:

答案 0 :(得分:0)

我应该承认这没有详细记录,但此事件中的e.Xe.Y相对于单元格的左上角坐标,而HitTest需要数据网格视图客户端坐标。

要获得正确的点击测试,您可以使用类似这样的内容

var dgv = (DataGridView)sender;
var cellRect = dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false);
var hit = dgv.HitTest(e.X + cellRect.X, e.Y + cellRect.Y);