在面板Datagridview VB.NET中的表单

时间:2015-10-24 19:05:31

标签: sql-server vb.net datagridview

我有一个在面板内打开的表单。它有一个Datagridview。我想要做的是当我选择一行并单击编辑时,我会在编辑表单中获取当前所选行的文本。我以前在使用Showdialog时有这个工作。这次我不希望它以showdialog的形式出现。

我正在使用的代码使用Datagrid关闭表单,并确实显示顶行正常。但是当我选择不同的行时,它仍会显示编辑表单中的顶行。

以下是代码:

Try
        If (CIM.Panel2.Controls.Count > 0) Then
            CIM.Panel2.Controls.RemoveAt(0)
        End If
        Dim F1 As New CIMCLIENTEDIT()
        F1.TopLevel = False
        F1.Dock = DockStyle.Fill
        CIM.Panel2.Controls.Add(F1)
        F1.Show()
        F1.txtstdid.Text = dgvData.CurrentRow.Cells(1).Value.ToString
        F1.txtName.Text = dgvData.CurrentRow.Cells(2).Value.ToString
        F1.txtEmail.Text = dgvData.CurrentRow.Cells(3).Value.ToString
        F1.txtNo.Text = dgvData.CurrentRow.Cells(4).Value.ToString
        F1.txtAddress.Text = dgvData.CurrentRow.Cells(5).Value.ToString

    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
    End Try

代码是与showdialog一起使用的代码的精确副本。显然上面的代码在打开编辑表单之前关闭了面板中的第一个表单,但是,它似乎确实正好让Datagrid的顶行。

这有效:

Try

        CIMCLIENTEDIT.Text = "Edit Details"
        CIMCLIENTEDIT.txtstdid.Text = dgvData.CurrentRow.Cells(0).Value.ToString
        CIMCLIENTEDIT.txtName.Text = dgvData.CurrentRow.Cells(1).Value.ToString
        CIMCLIENTEDIT.txtEmail.Text = dgvData.CurrentRow.Cells(2).Value.ToString
        CIMCLIENTEDIT.txtNo.Text = dgvData.CurrentRow.Cells(3).Value.ToString
        CIMCLIENTEDIT.txtAddress.Text = dgvData.CurrentRow.Cells(4).Value.ToString
        CIMCLIENTEDIT.ShowDialog()
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
    End Try

非常感谢,

马特

2 个答案:

答案 0 :(得分:1)

我忽略了一些非常简单的事情......看来我本来应该关闭小组了!有道理..

Try

    Dim F1 As New CIMCLIENTEDIT()
    F1.TopLevel = False
    F1.Dock = DockStyle.Fill
    CIM.Panel2.Controls.Add(F1)
    F1.Show()
    F1.txtstdid.Text = dgvData.CurrentRow.Cells(1).Value.ToString
    F1.txtName.Text = dgvData.CurrentRow.Cells(2).Value.ToString
    F1.txtEmail.Text = dgvData.CurrentRow.Cells(3).Value.ToString
    F1.txtNo.Text = dgvData.CurrentRow.Cells(4).Value.ToString
    F1.txtAddress.Text = dgvData.CurrentRow.Cells(5).Value.ToString

    If (CIM.Panel2.Controls.Count > 0) Then
        CIM.Panel2.Controls.RemoveAt(0)
    End If
Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, Me.Text)
End Try

答案 1 :(得分:0)

关键点是你的dgvData变量。请检查初始化的方式和位置,以及设置CurrentRow属性的位置。