WinForms DataGridView - 如何使用“添加新行”行添加行

问题描述 投票:0回答:1

我确信这是一个超级简单的问题 - 但 YouTube 没有任何帮助......而且我很笨。希望有人能立即让我摆脱痛苦。

我有一个 WinForms DataGridView(使用 C#),底部有“添加新行”行。它绑定到数据表,但这与我的问题并不真正相关。

我想要知道的是,当使用“添加新行”行添加新行时会触发哪个事件 - 以便我可以检查单元格内容并自己更新数据源。是的,这可能不是最有效的方法。但请幽默一下我。毕竟,这应该是一个瞬间......不是吗?

我看过的每个 YouTube 视频都使用单独的文本框和一个按钮来添加新行。十分简单。我发现的唯一一个使用“添加新行”行的是:CodAffection 的“在 C# DataGridView 中插入更新和删除”。它当然有效(谢天谢地!),但他使用了 CellValueChanged 事件(大约二十分钟)。

他的数据源有一个 Id 列,他使用 .CurrentRow 来检查它。如果它是 0,那么他知道正在添加一个新行,如果它不是 0,那么他就知道正在编辑一行。然后他获取单元格值,创建 SQL INSERT 或 UPDATE 语句,然后嗖嗖 - 一切都很好。

这就是我想要的,但是...至少可以说,这让我觉得违反直觉 - 如果您的数据没有 Id 列怎么办?一定有更合适的方法吧?

从那时起,我尝试了以下活动,但没有任何快乐:

单元格开始编辑

单元格内容点击

单元格结束编辑

单元格输入

细胞离开

单元格值已推送

离开

行已验证

行验证

用户添加行

已添加行

行离开

哦,还有,IsNewRow 属性根本不是人们所期望的!

我已经没有足够的事件来检查了,关于一些人们认为非常常见和直接的事情。

我在 Stack Overflow 上看过很多次。但找不到我正在寻找的答案。也许这是因为我没有提出正确的搜索问题?不管怎样,我最后还是放弃了,求指路!

如果必须的话,我将使用 CellValueChanged 事件并捏造它。但是,如果有人可以命名“添加新行”行添加新行时触发的事件,那么我将非常感激!

提前非常感谢,

c# winforms datagridview
1个回答
0
投票

通过检查 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
    }
}

https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.datagridview.cellvaluechanged?view=windowsdesktop-7.0#examples

© www.soinside.com 2019 - 2024. All rights reserved.