从 gridview 到文本框的事件与 vb.net 中文本框中的结果不匹配

Events from gridview to textbox do not match the result in textbox in vb.net

文本框日期 (txt.DTE) 是否应该为空,而不是包含我双击单元格网格视图的前一个日期的日期。有解决办法还是我的代码有问题?

注意:我使用 visual studio 2010

 Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
        x = DataGridView1.Rows.IndexOf(DataGridView1.CurrentRow)
        txtCODE.Text = DataGridView1.Rows(x).Cells(0).Value.ToString()
        Dim dte = DataGridView1.Rows(x).Cells(1).Value.ToString()
        If dte <> Nothing Then
            txtDTE.Text = CDate(dte)
        End If
        txtQTY.Text = DataGridView1.Rows(x).Cells(2).Value.ToString()
        txtPRICE.Text = DataGridView1.Rows(x).Cells(3).Value.ToString()
    End Sub

if 子句中添加 else 代码,以在日期列为空时清除 txtDTE 的值。

Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
        x = DataGridView1.Rows.IndexOf(DataGridView1.CurrentRow)
        txtCODE.Text = DataGridView1.Rows(x).Cells(0).Value.ToString()
        Dim dte = DataGridView1.Rows(x).Cells(1).Value.ToString()
        If dte <> Nothing Then
            txtDTE.Text = CDate(dte)
        else
            ' CLEAR txtDTE if dt = nothing
            txtDTE.clear()
        End If
        txtQTY.Text = DataGridView1.Rows(x).Cells(2).Value.ToString()
        txtPRICE.Text = DataGridView1.Rows(x).Cells(3).Value.ToString()
    End Sub

另一个建议
您可以使用 e.RowIndex 而不是 DataGridView1.Rows.IndexOf(DataGridView1.CurrentRow),这也是 returns 当前行索引。

示例:

x = e.RowIndex()

而不是

x = DataGridView1.Rows.IndexOf(DataGridView1.CurrentRow)