每当我点击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....
}
}
}
答案 0 :(得分:0)
我应该承认这没有详细记录,但此事件中的e.X
和e.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);