当用户单击与正在编辑的单元格位于同一行的行标题时,我试图强制DataGridViewCell
退出编辑模式。对于记录,editmode设置为EditOnEnter。
所以我相应地写了下面的事件:
private void dGV_common_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
dGV_common.EndEdit();
}
上述代码未强制单元格结束编辑模式。以下代码强制单元格从editmode退出:
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来选择多个行标题时会失败。
我如何妥善处理这种情况?
答案 0 :(得分:5)
本周我遇到了完全相同的问题!看来这是datagridview中一个记录很好的bug。我不确定它是否已在任何更新版本中修复。单击网格时检查行标题并更改editmode似乎可以正常工作:
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;
}
}
但是,如果您在整个应用程序中使用了很多数据网格视图,这仍然是一项令人恼火的工作,所以如果您发现了更好的解决方案,请告诉我。
答案 1 :(得分:0)
我找到了一个轻松的方法来禁用编辑模式:
Geocoder geocoder = new Geocoder(activityReference.get(), Locale.getDefault());
只需按tab,然后按shift + tab