2015-10-28 27 views
0

我有一个窗体(frmwizard),我正在使用它来创建一个像界面一样的向导。该表单包含一个用户控件和一个按钮(用于测试)。表单上还有一个名为“NextPage”的函数VB.NET用户控件引用表格

表单在加载时加载一个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

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

我想使用户控制按钮保存控件内的数据,然后浏览到下一个向导页面。希望这是足够的信息

+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 
+0

谢谢你。处理这个问题的最好方法是什么?乐于改变这一点并学习。将有大约5个向导用户控件和一个表单,我最好使用表单/模块来做到这一点? –

+0

想想像按钮这样的常规控件是如何工作的。它为外界引发事件(Clicked,MouseDown等......),以便他们可以随意使用它们。你只需要做同样的事情,设计你的用户控件,使它们是独立的,并引发你需要在表单中使用的事件。然后根据需要处理表单中的事件。 –