我有一个表单(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
我确信我需要做一些简单的事情,但我不确定我忽略了什么。
我正在尝试在用户控件上创建按钮在控件中保存数据,然后浏览到下一个向导页面。希望这是足够的信息
答案 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