我有一個在面板內打開的窗體。它有一個Datagridview。我想要做的是當我選擇一行,然後單擊編輯我得到編輯窗體中當前選定的行的文本。我以前在使用Showdialog時得到了這個工作。這一次我不希望它以showdialog的形式。面板內的窗體Datagridview VB.NET
我正在使用的代碼關閉與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
非常感謝,
馬特
嗨@SQLPolice感謝您的回覆。我正在爲此苦苦掙扎!我已經添加了可用的代碼。我試圖不使用ShowDialog。我希望它作爲面板內的一種新形式。它適用於上述第一行..我在這裏錯過了一些明顯的東西! – Matt