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

wkyowqbh  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(132)

超级简单的问题在这里,我敢肯定-但YouTube一直没有帮助.而且我很笨希望有人能马上把我从痛苦中解救出来。
我有一个WinFormsDataGridView(使用C#),其底部沿着有AddNewRow行。它绑定到一个数据表,但这与我的问题无关。
我只想知道当使用AddNewRow行添加新行时触发哪个事件-这样我就可以检查单元格内容并自己更新数据源。是的,这可能不是最有效的方法。请幽默我。毕竟,这应该是一个管理单元...不是吗
我看过的每个YouTube视频都使用单独的文本框和一个按钮来添加新行。小菜一碟。我发现的唯一一个使用添加新行行的是:* “在C# DataGridView中插入更新和删除”* by CodAffection.它确实有效(谢天谢地!),但他使用CellValueChanged事件(大约20分钟)。
他的数据源有一个Id列,他使用<datagridview_Name>.CurrentRow来检查它。如果它是0,那么他知道一个新的行正在被添加,如果它不是0,那么一行正在被编辑。然后他得到单元格的值,创建一个SQL语句或UPDATE语句,然后嗖的一声,一切都好了。
我也想这样,但是...至少可以这么说,这让我觉得是违反直觉的--如果您的数据没有ID列怎么办?一定有更合适的方法吧?
从那时起,我尝试了以下事件没有喜悦:
CellBeginEdit
CellContentClick
CellEndEdit
CellEnter
CellLeave
CellValue推送
离开
行验证
行验证
UserAddedRow
添加的行
RowLeave
哦,还有,IsNewRow的属性根本不是人们所期望的!
我正在运行的事件检查,关于一些人会认为是很常见的和直接向前。
我在Stack Overflow上看过很多。但是找不到我要的答案。也许这是因为我没有问正确的搜索问题?不管怎么说,我终于不得不给予,问路了!
我将使用CellValueChanged事件并在必要时篡改它。但是,如果有人能命名的事件时,一个新的行是由添加新行添加,那么我会非常感激!
在此先向您致谢,

uajslkp6

uajslkp61#

通过检查DataGridView中的NewRowIndex属性并比较已编辑单元格的行,可以查看哪一行是新行。然后,您仍然需要检查单元格值何时更改。这个有用吗

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

相关问题