2

在我的 vb.net 项目中,我有 3 个表单。home_mdi,ViewfrmAddDatafrm.

Viewfrm上面有一个 UltraWinGrid,它正在显示一些数据。当我单击add data按钮时,AddDatafrm打开。保存数据后,表单将关闭。此时,我希望 UltraWinGridViewfrm能够更新/刷新并显示我添加的数据。目前,它不会显示它,直到我关闭Viewfrm然后再次打开它。

图片显示了这一点。(数据一开始不存在,然后它被添加并且不出现。最终图像是显示新数据的表单,在我重新打开它之后。

在此处输入图像描述

我该如何改变?

当前代码:

打开添加表单

Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click

    Using fp = New frmAddData(Globals.m_database)

        If fp.ShowDialog() = DialogResult.OK Then

            ugData.DataSource = Nothing
            getPeople()

        End If
    End Using

End Sub

保存输入的信息(在添加表单上)

Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click

    Dim m_cn As New OleDbConnection
    m_cn = Globals.m_database.getConnection()

    If txtFirstName.Text = "" Then
        MsgBox("First name cannot be blank")

    ElseIf txtLastName.Text = "" Then
        MsgBox("Last name cannot be blank")

    ElseIf txtAge.Text = "" Then
        MsgBox("Age cannot be blank")

    ElseIf txtPostCode.Text = "" Then
        MsgBox("Postcode cannot be blank")

    Else

        Dim personID As Integer = database.SaveNewPerson(txtFirstName.Text, txtLastName.Text, txtAge.Text, txtPostCode.Text, m_cn)

        MsgBox("Save successful")

        txtFirstName.Text = ""
        txtLastName.Text = ""
        txtAge.Text = ""
        txtPostCode.Text = ""
        Globals.savedValue = True

        Me.Close()

    End If

End Sub

调用以在视图窗体上加载数据库:

Public Sub getPeople()

    Try
        Dim sql As String = "SELECT * FROM tblPerson ORDER BY [personID] ASC;"
        Dim cm As New OleDbCommand(sql, Globals.m_database.getConnection())
        Dim da As New OleDbDataAdapter(cm)
        Dim dt As New DataTable()
        da.Fill(dt)
        ugData.DataSource = dt

    Catch Ex As Exception
        mdi1.errorLog(Ex.Message, Ex.StackTrace)
        MsgBox("Failed to retrieve data, refer to error log")
    End Try

End Sub
4

1 回答 1

1

在 WinForm 应用程序中,如果按下按钮并且其DialogResult属性设置为 None 以外的任何值,引擎会自动关闭模态对话框。然后 Winform 引擎将表单 DialogResult 设置为按钮的相同属性,退出 ShowDialog 调用并返回单击按钮的 DialogResult 属性。
通常这足以处理上述情况。(或者,在用户在是/否或确定/取消方案之间进行选择的一般情况下)

在您的代码中(如聊天中所述),您将 Save 按钮的 DialogResult 属性设置为DialogResult.None。这意味着 Winforms 引擎不会自动关闭您的表单,您需要编写自己的关闭例程。

但是,如果您忘记将 Form 属性 DialogResult 设置为 DialogResult.OK,您的调用代码将永远无法刷新网格,因为 DialogResult.OK 的测试失败。

因此,无论您必须关闭 fromAddData 实例的任何关闭代码,请记住将表单 DialogResult 属性设置为

 Me.DialogResult = DialogResult.OK 

或者,如果出现问题,使用

 Me.DialogResult = DialogResult.Cancel
于 2016-07-15T13:44:07.100 回答