2015-10-24 82 views
0

我有一個在面板內打開的窗體。它有一個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 

非常感謝,

馬特

回答

0

要害是你dgvData變量。請檢查您的初始化方式和位置,以及您在何處設置CurrentRow屬性。

+0

嗨@SQLPolice感謝您的回覆。我正在爲此苦苦掙扎!我已經添加了可用的代碼。我試圖不使用ShowDialog。我希望它作爲面板內的一種新形式。它適用於上述第一行..我在這裏錯過了一些明顯的東西! – Matt

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 
相關問題