全部,我知道我们可以为DataGridView
设置一个可编辑的列。
完成编辑单元格后。 CellEndEdit
事件将被触发。
但我只是想知道当我点击DataGridView
的空白区域时为什么没有结束单元格的编辑。然后点击DataGridView
之外的区域也不会触发它。只有点击其他单元格才能实现。这真的没有意义。谁知道为什么?以及如何制作它?它尝试使用DataGridView
的Click事件,但是当我单击该单元格时,它还会触发DataGridView_click
事件。
private void dgvList_Click(object sender, EventArgs e)
{
dgvFileList.EndEdit();
}
答案 0 :(得分:3)
尝试在网格的MouseDown事件中使用HitTest函数:
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控件外部将需要命中一个可聚焦控件。
答案 1 :(得分:0)
在BeginEdit
之前。设置变量以确定当前状态是否为编辑模式。
bBeginEdit = true;
dgvFileList.BeginEdit(false);
在Form_Click事件中
if (bBeginEdit)
{
dgvFileList.EndEdit();
bBeginEdit = false;
}
谢谢,
乔
答案 2 :(得分:0)
CellEndEdit()仅在单元格处于编辑模式时才触发事件(请参阅Joe.wang的响应)。您可以简单地在CellEndEdit()和CellBeginEdit()之前进入编辑模式(来自CellContentClick-handler的代码,PickNewFont()是FontDialog的包装):
[...]
else if (String.Compare(rowName, "Font name") == 0) // user clicks on Font-row
{
dgvConfigSettings.BeginEdit(true);
Font newFont = PickNewFont(fontName, fontSize, fontStyle);
dgvConfigSettings.CurrentCell.Tag = newFont; // a bit dirty.... but that way we can pick-up the font in the panel-handler more easily
dgvConfigSettings.CurrentCell.Value = newFont.Name.ToString();
dgvConfigSettings.EndEdit();
}