2013-08-01 3 views
4

Я хочу предложить пользователю ввести новые элементы в коллекцию данных, когда они нажмут в пустой области DataGridView. Как я могу узнать, щелкнул ли пользователь внутри DataGridView (по серой области по умолчанию), но не в Column//Cell?Как определить, что пользователь нажал DataGridView, но не ячейку

+0

вы можете проверить свойство e.Originalsource от изменения EventHandler .. – loop

ответ

7

Вы можете использовать событие 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 
    } 
} 
1

Чтобы определить, когда пользователь нажал на пустой части DataGridView, вы будете иметь, чтобы справиться с его MouseUp event.

В этом случае вы можете HitTest щелкнуть местоположение и посмотреть его, чтобы указать 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 
     } 
    } 
} 
Смежные вопросы