2013-11-28 68 views
1

所有,我知道我们可以设置一个可编辑为DataGridView的列。 并完成编辑单元格时。将触发CellEndEdit事件。 但我只想知道为什么当我点击DataGridView的空白区域时没有结束单元格的编辑。并且点击DataGridView以外的区域也不会触发它。只有点击其他单元才能实现。这真的没有道理。谁能知道为什么?和如何做到这一点?它尝试使用DataGridView的Click事件,但是当我单击单元格时,它也会触发DataGridView_click事件。为什么没有触发DataGridView的CellEndEdit事件

private void dgvList_Click(object sender, EventArgs e) 
    { 

     dgvFileList.EndEdit(); 

    } 

enter image description here

回答

2

尝试使用的HitTest函数在网格的MouseDown事件:

void dgvFileList_MouseDown(object sender, MouseEventArgs e) { 
    DataGridView.HitTestInfo hit = dgvFileList.HitTest(e.X, e.Y); 
    if (hit.RowIndex < 0 | hit.ColumnIndex < 0) { 
    dgvFileList.EndEdit(); 
    } 
} 

点击DataGridView控件之外需要打一个可聚焦控制。

+0

哇...我以前从来没听过。什么打扰我是我不能告诉单元格点击和网格点击事件。现在我很高兴!谢谢 。男子 –

+0

我也将Form_Click事件实现为'EndEdit'。谢谢。 –

0

之前BeginEdit。设置一个变量来标识当前状态是否为编辑模式。

bBeginEdit = true; 
dgvFileList.BeginEdit(false); 

在Form_Click事件

 if (bBeginEdit) 
     { 
      dgvFileList.EndEdit(); 
      bBeginEdit = false; 
     } 

感谢,

相关问题