gpt4 book ai didi

c# - 单击行标题时如何强制 datagridviewcell 结束编辑

转载 作者:太空狗 更新时间:2023-10-29 21:34:44 26 4
gpt4 key购买 nike

当用户单击与正在编辑的单元格位于同一行的行标题时,我试图强制 DataGridViewCell 退出编辑模式。作为记录,编辑模式设置为 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 中一个有据可查的错误。我不确定它是否已在任何更高版本中修复。单击网格时检查行标题并更改编辑模式似乎可行:

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;
}
}

但是,如果您在整个应用程序中使用许多数据 GridView ,这仍然是一个令人讨厌的解决方法,所以如果您发现更好的解决方案,请告诉我。

编辑:this question seems to have a similar solution

关于c# - 单击行标题时如何强制 datagridviewcell 结束编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com