문제

I want to prompt the user to enter new elements into a databound collection when they click in the empty area of a DataGridView. How can I find out if the user has clicked inside of the DataGridView (the grey area by default), but not in a Column/Row/Cell?

도움이 되었습니까?

해결책

You can use MouseClick event and do a hit test for it.

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
    }
}

다른 팁

To determine when the user has clicked on a blank part of the DataGridView, you're going to have to handle its MouseUp event.

In that event, you can HitTest the click location and watch for this to indicate HitTestInfo.Nowhere.

For example:

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
        }
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top