我遇到了在datagridview中循环的问题,其中我有3列。 第1栏,第2栏和第3栏。
当“Column2”值等于或大于75时,“Column3”值等于“Column1”。否则“Column3”等于0。
如果“Column2”值为“IP”或“NFE”,则“Column3”值等于0。
以下是插图:
Column1 Column2 Column3
3 78 3
3 76 3
3 65 0
3 IP 0
3 NFE 0
我试过这段代码;
Private Sub DGVGRADES_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DGVGRADES.CellValueChanged
For Each row As DataGridViewRow In DGVGRADES.Rows
If row.Cells(4).Value >= 75 Then
row.Cells(0).Value = row.Cells(3).Value
ElseIf row.Cells(4).Value.ToString <= 3 Then
row.Cells(0).Value = row.Cells(3).Value
ElseIf row.Cells(4).Value < 75 Then
row.Cells(0).Value = 0
ElseIf row.Cells(4).Value = "IP" Then
row.Cells(0).Value = 0
End If
Next
End Sub
但是给我这个错误。
从字符串“IP”到“Double”类型的转换无效。
对于我的学校要求,我真的非常需要帮助。感谢
答案 0 :(得分:0)
这应该是您的功课的一个简单的解决方案。但是你应该理解代码,而不仅仅是复制/粘贴答案。
Private Sub DGVGRADES_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DGVGRADES.CellValueChanged
For Each row As DataGridViewRow In DGVGRADES.Rows
If Double.TryParse(row.Cells(4).Value, Nothing) = False Then
If row.Cells(4).Value.ToString = "NFE" Then
row.Cells(0).Value = 0
ElseIf row.Cells(4).Value.ToString = "IP" Then
row.Cells(0).Value = 0
End If
Else
If row.Cells(4).Value >= 75 Then
row.Cells(0).Value = row.Cells(3).Value
ElseIf row.Cells(4).Value.ToString <= 3 Then
row.Cells(0).Value = row.Cells(3).Value
ElseIf row.Cells(4).Value < 75 Then
row.Cells(0).Value = 0
End If
End If
Next
End Sub