在项目中有一个DataGridView。
我有一些代码可以显示基于的信息 被点击的单元格。
我的问题是如何检测用户是否点击了列或行 标题(除了单元格之外的任何东西)。
所有这些都与'dataGridView1_CellMouseDown'方法有关,我正在使用 HitTest尝试检测用户点击的内容,但我只是 当用户点击一个单元格时,获取'TopLeftHeader'并且'None' 在其他地方,Row索引始终为-1
答案 0 :(得分:2)
答案 1 :(得分:0)
您仍然可以使用CellMouseDown事件处理程序。事实上我觉得它有点干净,因为使用MouseDown事件,你必须创建一个HitTest来获取所选行。
以下代码是等效的:
private void dgv_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
// If right-click
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
// Get selected row
var selectedRow = dgvBatches.Rows[e.RowIndex];
}
}
private void dgv_MouseDown(object sender, MouseEventArgs e)
{
// If right-click
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
// Get the selected row/column
DataGridView.HitTestInfo info = dgvBatches.HitTest(e.X, e.Y);
// Get selected row
var selectedRow = dgvBatches.Rows[info.RowIndex];
}
}