【问题标题】:vb.net - problem making a call from one usercontrol to another formvb.net - 从一个用户控件调用另一个表单的问题
【发布时间】:2010-08-28 05:13:59
【问题描述】:

我有一个 tabcontrol,它使用以下代码从我创建的“用户控件”(vb.net 中的单独表单)创建标签页:(MainTab 是我创建的单独的用户控件,其中包含文本框等)

Dim tmpTab As New MainTab
myTabControl.TabPages.Add()
Dim tmpTabCount As Integer = myTabControl.TabPages.Count
myTabControl.TabPages.Item(tmpTabCount - 1).Controls.Add(tmpTab)
myTabControl.TabPages.Item(tmpTabCount - 1).Text = "Untitled"

我使用的是 devexpress xtratab 控件,因此代码看起来可能与默认的 vb.net 选项卡控件有点不同。

现在在我的 MainTab 用户控件文件文件中,我无法弄清楚如何在 form1 中调用 xtra 选项卡控件所在的控件。 “Me.Parent.Dispose”用于在通过 MainTab 控件执行时关闭选项卡,但这是我与父级通信所能获得的。

有人知道解决办法吗?我不确定是否必须引用 MainTab 用户控件中的某些内容,或者为了与默认 form1 上的任何对象进行通信。

【问题讨论】:

    标签: vb.net devexpress


    【解决方案1】:

    一般来说,我避免让我的孩子控制知道父母。它导致不愉快的耦合比我关心的更频繁。

    考虑将自定义事件添加到您的表单可以订阅的MainTab 类。当您想将消息传递给表单时,您的用户控件可以调用该方法,并且您的表单的事件处理程序可以相应地处理它。这种模式通过减少对父级的依赖,帮助您的用户控件可插入到其他表单中。

    这篇 MSDN 文章讨论了在 Windows 窗体中创建用户控件事件:

    http://msdn.microsoft.com/en-us/library/aa302342.aspx

    【讨论】:

    • 经过更多的试验/错误后,我设法使以下工作正常工作,这是否“安全”使用? Dim tmpParentForm As Form = Me.FindForm() If Not tmpParentForm is nothing then
    • 应该没问题。根据您的情况,您也可以选择将 tmpParentForm 转换为表单类型,以便访问您的自定义公共方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 2016-05-06
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多