VB.NET用户控件引用表单

时间:2015-10-28 05:10:53

标签: vb.net winforms

我有一个表单(frmwizard),我用它来创建一个类似于界面的向导。该表单包含一个usercontrol和一个按钮(用于测试)。表格上还有一个名为“NextPage”的功能

表单在加载时加载usercontrol(ucpage1),usercontrol上有一个按钮,单击该按钮时会尝试按照以下方式调用主窗体上的函数:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    frmWizard.Nextpage(me.name)
End Sub

在我的名为“NextPage”的函数中,有以下用于测试。

Public Sub NextPage(ByVal CurrentPage As String)
    MessageBox.Show(UserControl1.Controls.Count)
End Sub

当我从表单本身调用该函数时(通过按钮)我得到1的结果,当我通过用户控件调用该函数时,我得到的结果为0

我确信我需要做一些简单的事情,但我不确定我忽略了什么。

我正在尝试在用户控件上创建按钮在控件中保存数据,然后浏览到下一个向导页面。希望这是足够的信息

1 个答案:

答案 0 :(得分:1)

Codependance是一个坏主意,因为它将两种类型锁定在一起以备将来使用。如果您的用户控件确实需要调用表单,则应该让它引发事件并在表单中处理事件。

Public Class MyUserControl
    Public Event OnNextPage(ByVal sender As Object, ByVal e As EventArgs)

    Private Sub btnNextPage_Click(sender As Object, e As EventArgs) Handles btnNextPage.Click
        RaiseEvent OnNextPage(Me, New EventArgs)
    End Sub
End Class

Public Class Form1
    Private Sub MyUserControl_OnNextPage(sender As Object, e As EventArgs) Handles MyUserControl1.OnNextPage ' , MyUserControl2.OnNextPage, etc...
        MessageBox.Show(DirectCast(sender, MyUserControl).Controls.Count)
    End Sub
End Class