代码之家  ›  专栏  ›  技术社区  ›  Jack

gridview到textbox的事件与vb中textbox的结果不匹配。网

  •  0
  • Jack  · 技术社区  · 2 年前

    文本框日期(txt.DTE)应该是空的,而不是包含我双击单元格gridview的前一个日期的日期。有解决方案吗,还是我的代码错了?。

    注意:我使用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
    

    view gridview

    1 回复  |  直到 2 年前
        1
  •  1
  •   Kuro Neko    2 年前

    添加一个 else 在你的 if 条款以清除 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) 它还返回当前行索引。

    例子:

    x = e.RowIndex()
    

    而不是

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