You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决NumericUpDown值为0时无法正确删除DataGridView中Hawaiian对应行的问题

解决DataGridView中精准删除Hawaiian行的问题

我太懂你这一周的困扰了——你之前写的删除代码依赖CurrentRow.Index,但当前选中的行未必就是目标Hawaiian行,这才会出现要么删错行、要么只能删第一行的情况。其实咱们可以复用你之前查找Hawaiian行的思路,先精准定位到目标行再执行删除,就能彻底解决问题。

修正后的删除逻辑代码

' 反向遍历行,避免删除后索引错乱
For i As Integer = DataGridView1.Rows.Count - 1 To 0 Step -1
    Dim targetRow As DataGridViewRow = DataGridView1.Rows(i)
    
    ' 先做非空判断,防止空引用异常
    If targetRow.Cells(0).Value IsNot Nothing AndAlso targetRow.Cells(0).Value.ToString() = "Hawaiian" Then
        Dim qty As Double = 0
        Dim amount As Double = 0
        
        ' 安全转换单元格值,避免格式错误导致崩溃
        Double.TryParse(targetRow.Cells(1).Value?.ToString(), qty)
        Double.TryParse(targetRow.Cells(2).Value?.ToString(), amount)
        
        ' 当Qty或Amount为0时删除该行
        If qty = 0 OrElse amount = 0 Then
            DataGridView1.Rows.Remove(targetRow)
            ' 如果只需要删除第一个匹配的Hawaiian行,可在此添加Exit For终止循环
            ' Exit For
        End If
    End If
Next

关键优化点说明

  • 反向遍历:从最后一行往第一行遍历,避免删除行后后续行的索引前移,导致漏判或索引越界问题。
  • 非空+安全转换:先判断单元格值不为空,再用Double.TryParse替代直接Parse,彻底避免空引用和格式转换异常。
  • 精准定位:严格匹配第一列值为"Hawaiian"的行,再检查Qty(第二列)或Amount(第三列)是否为0,完全贴合你的需求。

你可以把这段代码放在NumericUpDown的ValueChanged事件里,和你之前的数量更新逻辑结合,这样数值变更时就能自动同步处理行的更新或删除了。

内容的提问来源于stack exchange,提问作者Shutong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:02:31