如何使用vb.net

时间:2017-10-09 08:59:52

标签: vb.net

我遇到了这个问题,根据下一行的值设置了一个单元格值。

例如;

 Remarks    Reference
   A           50
   A           25
   B            5
              -25

案例1:

如果列中的Next Cell.Row的值"参考"是一个正数,然后是列"备注"中的cell.row的值。是" A"。

案例2:

如果列中的Next Cell.Row的值"参考"是一个负数,然后是列#34;备注"中的cell.row的值。是" B"。

我已经尝试过这段代码,但我无法得到我需要的结果。

    Dim Bal As Decimal = 0
    For Each r As DataGridViewRow In dgvSTSub.Rows
        Bal = Bal + r.Cells(3).Value - r.Cells(1).Value
        r.Cells(3).Value = Bal

        If Bal > 0 Then
            r.Cells(2).Value = Bal
        ElseIf Bal < 0 Then
            r.Cells(2).Value = r.Cells(3).Value
        End If
    Next

请与我分享一些如何操作的代码。

1 个答案:

答案 0 :(得分:1)

首先,我建议使用For循环而不是ForEach,因为迭代行变得更加方便和容易。

其次,在访问ColumnNames时使用Index代替.Cells,例如:使用.Cells("reference")引用是列名称)而不是.Cells(1)。我建议这样做,因为如果您将来碰巧重新排序列,您的方法和函数将不会受到阻碍,除非您更改列的名称。
注意:此处的ColumnName不是您在DataGridView UI中看到的标题文本。 (希望你已经知道)

由于你没有显示你在哪里设置评论,这应该让你知道如何实现它:

For index = 0 To DataGridView1.RowCount - 1
   Dim nxt = 1 
   If (index + 1 < DataGridView1.RowCount) Then
        nxt = DataGridView1.Rows(index + 1).Cells("reference").Value
   End If
   If (nxt) > 0 Then
        DataGridView1.Rows(index).Cells("remark").Value = "A"
   Else
        DataGridView1.Rows(index).Cells("remark").Value = "B"
   End If
Next

虚拟输出:

Remark    Reference

A        13
B        21
A       -33
B        41
A       -54