我确信这是一个超级简单的问题 - 但 YouTube 没有任何帮助......而且我很笨。希望有人能立即让我摆脱痛苦。
我有一个 WinForms DataGridView(使用 C#),底部有“添加新行”行。它绑定到数据表,但这与我的问题并不真正相关。
我想要知道的是,当使用“添加新行”行添加新行时会触发哪个事件 - 以便我可以检查单元格内容并自己更新数据源。是的,这可能不是最有效的方法。但请幽默一下我。毕竟,这应该是一个瞬间......不是吗?
我看过的每个 YouTube 视频都使用单独的文本框和一个按钮来添加新行。十分简单。我发现的唯一一个使用“添加新行”行的是:CodAffection 的“在 C# DataGridView 中插入更新和删除”。它当然有效(谢天谢地!),但他使用了 CellValueChanged 事件(大约二十分钟)。
他的数据源有一个 Id 列,他使用
这就是我想要的,但是...至少可以说,这让我觉得违反直觉 - 如果您的数据没有 Id 列怎么办?一定有更合适的方法吧?
从那时起,我尝试了以下活动,但没有任何快乐:
单元格开始编辑
单元格内容点击
单元格结束编辑
单元格输入
细胞离开
单元格值已推送
离开
行已验证
行验证
用户添加行
已添加行
行离开
哦,还有,IsNewRow 属性根本不是人们所期望的!
我已经没有足够的事件来检查了,关于一些人们认为非常常见和直接的事情。
我在 Stack Overflow 上看过很多次。但找不到我正在寻找的答案。也许这是因为我没有提出正确的搜索问题?不管怎样,我最后还是放弃了,求指路!
如果必须的话,我将使用 CellValueChanged 事件并捏造它。但是,如果有人可以命名“添加新行”行添加新行时触发的事件,那么我将非常感激!
提前非常感谢,
通过检查 DataGridView 的 NewRowIndex 属性并比较编辑单元格的行,您可以看到哪一行是 DataGridView 中的新行。然后您仍然需要检查单元格值何时更改。这有帮助吗?
private void DataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
// Update the balance column whenever the value of any cell changes.
if (e.RowIndex == DataGridView1.NewRowIndex) {
// do your thing
}
}