如何调用从mdiparent调用mdichildB方法的mdichildA方法

问题描述 投票:0回答:1

我有一个MDIParent表单,其中包含工具栏中的上一个和下一个按钮。 MDIChildA包含一个DataGridView,并且MDIChildB或MDIChildC表单根据行类型显示所选行的属性。所有MDI子表单都以DocStyle.Fill显示。

目标是使上一个和下一个按钮调用MDIChildA中的方法,并使MDIChildA为下一个DataGridView行刷新MDIChildB或MDIChildC(取决于行类型。)>

MDIChildC表单是最近在DataGridView中包含第二种类型的项目时引入的。当只有一个行类型时,上一个和下一个函数将起作用。这是下一步的编码方式:

在MDIParent:

    Private Delegate Sub InvokePrevNext()

    Private Sub tsbNext_Click(sender As Object, e As EventArgs) Handles tsbNext.Click
        Try
            If Not ActiveMdiChild Is Nothing Then
                Dim frm As Object
                frm = Me.ActiveMdiChild
                Dim dlg As InvokePrevNext = AddressOf frm.MoveNext
                dlg.Invoke()
            End If

        Catch ex As Exception
            ' ignore exceptions
        End Try
    End Sub

在MDIChildB中:

    Public Sub MoveNext()
        Call psMovePreviousNext(pMDIChildA.NextRowPrimaryKey)
    End Sub

(最初调用MDIChildB时,它接收MDIChildA ByRef并保存其指针。)

现在存在MDIChildC表单,我需要重新定向控件,以便MDIChildA通过确定下一行类型并刷新适当的子代来处理下一个请求。在我看来,我不再可以使用ActiveMDIChild方法。

谁能建议一种方法?

我有一个MDIParent表单,其中包含工具栏中的上一个和下一个按钮。 MDIChildA包含一个DataGridView,并且MDIChildB或MDIChildC表单根据...

vb.net mdi
1个回答
0
投票

由于MDIChildA具有特定目的(显示网格)并提供其他表单(MDIChildB或MDIChildC)的信息,因此您可以在MDIParent(私有childA AS MDIChildA)中保留对MDIFormA实例的引用。然后在tsbNext_Click中,可以在childA(MDIChildA的实例)上调用一个公共函数,以返回所选的行信息,该信息随后可以传递给MDIChildB或MDIChildC等。

© www.soinside.com 2019 - 2024. All rights reserved.