如何确定用户单击了DataGridView,但没有单击单元格

本文关键字:单击 单元格 DataGridView 何确定 用户 | 更新日期: 2023-09-27 18:25:52

当用户在DataGridView的空白区域中单击时,我希望提示用户将新元素输入到数据绑定集合中。我如何才能发现用户是否在DataGridView(默认为灰色区域)内部单击,而不是在Column/Row/Cell中单击?

如何确定用户单击了DataGridView,但没有单击单元格

您可以使用MouseClick事件并对其进行命中测试。

private void dgv_MouseClick(object sender, MouseEventArgs e)
{
    var ht = dgv.HitTest(e.X, e.Y);
    if (ht.Type == DataGridViewHitTestType.None)
    {
         //clicked on grey area
    }
}

要确定用户何时单击了DataGridView的空白部分,您必须处理其MouseUp event

在这种情况下,您可以点击测试点击位置,并注意它是否指示HitTestInfo.Nowhere

例如:

private void myDataGridView_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
    //'#See if the left mouse button was clicked
    if (e.Button == MouseButtons.Left) {
        //'#Check the HitTest information for this click location
        if (myDataGridView.HitTest(e.X, e.Y) == HitTestInfo.Nowhere) {
            // Do what you want
        }
    }
}