2017-10-20 59 views
0

我有一个简单的DataGridView,并且我试图在单击按钮时获取单元格的值。当它被设置为一个变量时,它是不正确的,但是当我快速看它时它是正确的。我不明白是什么原因造成的?Datagridviewrow返回单元格的不正确的值

Private Sub btnUpdAll_Click(sender As Object, e As EventArgs) Handles btnUpdAll.Click 
     For Each r As DataGridViewRow In gvResults.Rows 
      Dim x = r.Cells(1).Value 
     Next 
    End Sub 

Correct value in the cell Variable gets this value

+2

您正在循环所有行,因此'x'的值将在每次迭代中更改。 – jmcilhinney

+3

另外,'x'的值不会被设置,直到你经过那个赋值,所以如果这是当前行,那么你会期望'x'包含前一行的值,而右边的表达式会给出当前行的值。 – jmcilhinney

回答

0

正如@jmcilhinney说我被错误地宣告循环内部的变量,每次都重新设置了。 @shimrod,我想要获得每一行并更新下面每行的单个单元格。

Private Sub btnUpdAll_Click(sender As Object, e As EventArgs) Handles btnUpdAll.Click 
     Dim x 
     For Each r As DataGridViewRow In gvResults.Rows 
      x = r.Cells(1).Value 
      updateRecord(x)    
     Next 
    End Sub 
0

为什么循环,如果你想要一个单元格,选择一个值。

我会用:

Private Sub btnUpdAll_Click(sender As Object, e As EventArgs) Handles btnUpdAll.Click 

    Dim row As DataGridViewRow = gvResults.CurrentRow 

    Dim x as String= row.Cells(e.ColumnIndex).Value.toString() 

End Sub 

Private Sub btnUpdAll_Click(sender As Object, e As EventArgs) Handles btnUpdAll.Click 

    Dim x As String = gvResults.Rows(e.RowIndex).Cells(e.ColumnIndex).Value.ToString() 

End Sub