0

是否可以通过调用子例程来刷新另一个打开形式的数据网格?

这个应用程序有一个带有 2 个数据网格的表单。当用户双击其中一个网格时,会打开另一个显示数据详细信息的表单。在用户更改详细信息后,用户单击保存按钮。

我们已将此代码放在详细信息表单的关闭事件中。

Private Sub FormParents_FormClosing(sender As System.Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

    FormParentsAndStudents.RefreshDataGrids()
End Sub

代码确实执行了,因为我们在其中放置了一个 msgbox 来测试它。

这是我们试图用来刷新数据网格的代码。它采用 2 个数据网格的形式:

Public Sub RefreshDataGrids()

    Me.ParentsTableAdapter.Fill(Me.DataSetParentsStudents.Parents)
    Me.StudentsTableAdapter.Fill(Me.DataSetParentsStudents.Students)
    LightGridParents.Refresh()
    LightGridStudents.Refresh()
End Sub

您能否告诉我们刷新此数据需要哪些额外的编码,或者我们是否使用不正确的位置从详细信息表单中调用此代码?

4

1 回答 1

0

我找到了一种方法,希望它可以帮助其他人。

我从刷新数据网格的详细信息表单中删除了调用。

相反,当用户双击以获取详细信息表单时,我将表单称为对话窗口。我在调用对话框表单之后进行了编码以重新填充表格适配器,这就是诀窍。

这是编码:

' Control handlers - Grid handlers.
'----------------------------------
Private Sub LightGrid_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles LightGridParents.MouseDoubleClick

    If ParentsBindingSource.Count > 0 Then

        ' Call the parents form.
        '-----------------------
        objFormParents = New FormParents(IDTextBox.Text, "From Parents And Students")
        objFormParents.ShowDialog()

        ' Refresh the data grid.
        '-----------------------
        Me.ParentsTableAdapter.Fill(Me.DataSetParentsStudents.Parents)
    End If
End Sub

Private Sub LightGridStudents_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles LightGridStudents.MouseDoubleClick

    If StudentsBindingSource.Count > 0 Then

        ' Call the students form.
        '------------------------
        objFormStudents = New FormStudents(StudentsIDTextBox.Text, "From Parents And Students")
        objFormStudents.ShowDialog()

        ' Refresh the data grid.
        '-----------------------
        Me.StudentsTableAdapter.Fill(Me.DataSetParentsStudents.Students)
    End If
End Sub
于 2012-05-07T13:20:09.407 回答