如何强制datagridviewcell结束编辑时,行标题单击
本文关键字:标题 单击 编辑 何强制 datagridviewcell 结束 | 更新日期: 2023-09-27 17:55:06
我试图迫使DataGridViewCell
退出编辑模式,当用户单击与正在编辑的单元格在同一行中的行头。"editmode"设置为"EditOnEnter"。
所以我写了下面的事件:
private void dGV_common_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dGV_common.EndEdit();
}
上面的代码没有强制单元格结束编辑模式。下面的代码强制单元格退出编辑模式:
private void dGV_common_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dGV_common.EndEdit();
dGV_common.CurrentCell = null;
}
它还取消选择整个行,当用户单击RowHeader
时,这不是期望的行为。
所以,我的工作是这样的:
private void dGV_customer_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dGV_customer.EndEdit();
dGV_customer.CurrentCell = null;
dGV_customer.Rows[e.RowIndex].Selected = true;
}
当您选择单行标头时工作良好,但当您尝试通过按住shift选择多个行标头时失败。
我该如何妥善处理这种情况?
这个星期我遇到了完全相同的问题!这似乎是datagridview中一个记录得很好的bug。我不确定它是否在以后的版本中被修复了。当单击网格时检查行标题并更改编辑模式似乎可以工作:
private void dataGridView_MouseClick( object sender, MouseEventArgs e ) {
DataGridView dgv = (DataGridView)sender;
if (dgv.HitTest(e.X, e.Y).Type == DataGridViewHitTestType.RowHeader) {
dgv.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2;
dgv.EndEdit();
} else {
dgv.EditMode = DataGridViewEditMode.EditOnEnter;
}
}
然而,如果你在整个应用程序中使用许多datagridview,这仍然是一个令人恼火的工作,所以如果你发现一个更好的解决方案,请告诉我。
编辑:这个问题似乎有一个类似的解决方案
我发现了一个禁用editmode的简单方法:
SendKeys.Send("{TAB}");
SendKeys.Send("+{TAB}");
它只是按tab键,然后shift+tab