gpt4 book ai didi

c# - 我可以让 DataGridView.EndEdit 触发 CellValidating 事件吗?

转载 作者:太空狗 更新时间:2023-10-29 17:35:35 25 4
gpt4 key购买 nike

我在我的 WinForms 应用程序中使用 DataGridView。我的主要目标是让 Enter 键不移动到网格中的下一行。我仍然需要回车键来验证和结束编辑模式。

我找到了 this FAQ entry和子类化 DataGridView 以覆盖 ProcessDialogKey()。如果按下的键是 Enter,我调用 EndEdit(),否则我调用 base.ProcessDialogKey()。

效果很好,只是没有触发 CellValidating 事件。

目前,我只是在调用 EndEdit 之前手动调用我的验证逻辑,但似乎我遗漏了什么。

我想我可以调用 OnCellValidating,但我会担心我错过了一些其他事件。我真正想要的是 EndEdit() 的某种风格,它的行为就像在禁用添加的网格的最后一行上按 enter。

最佳答案

CellValidating 在您更改 CurrentCell 之前不会被调用。所以我解决这个问题的方法是更改​​ CurrentCell,然后切换回当前单元。

    protected override bool ProcessDialogKey(Keys keyData)
{
if (keyData == Keys.Enter)
{
DataGridViewCell currentCell = CurrentCell;
EndEdit();
CurrentCell = null;
CurrentCell = currentCell;
return true;
}
return base.ProcessDialogKey(keyData);
}

关于c# - 我可以让 DataGridView.EndEdit 触发 CellValidating 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/422865/

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