从多个表单/类共享控件

时间:2015-04-29 15:18:14

标签: vb.net winforms

我目前陷入了如何在两种形式之间共享控制的问题。 这就是我想要做的: - 我有几种有自己功能的表格。 - 现在我想把它们全部集中在一个主体上。

通常我会通过创建以下代码来完成此操作:

Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Dim f As New Form2
    GroupBox1.Controls.Add(f.Get_Groupbox_controls)
End Sub
End Class

这将添加Form2.Groupbox1中包含的所有控件,并将其添加到Form1.Groupbox1。 通常这对我来说很好。

其中“Get_Groupbox_controls”是返回Form2.Groupbox1

的函数

或者,如果这不起作用,我将使用transparancykey在form1上显示整个form2。 (这不是一个需要解决方案,你必须做很多位置计算,但它有效)

但是现在我得到了一张有很多内容的表格。对于mainform我只想显示一个Container(groupbox),但是当用户点击“More setting ..”时,它必须显示整个表单以及所有控件。

问题是当我使用container.controls.add()函数时,我得到一个异常“在创建窗口句柄之前,无法在控件上调用Invoke或BeginInvoke” 错误是合乎逻辑的,因为尚未制作整个表单。但为了使表单正常工作,它必须更新“隐藏”的UI控件(标签/按钮/等)

所以主要的问题是,如何将一系列控件从Form1“移植”到form2并保留所有处理程序等...在Form1上

1 个答案:

答案 0 :(得分:2)

如果您有两个表单要放置相同的外观/功能GroupBox部分,您可能需要考虑创建一个包含共享功能的自定义用户控件,并且可以放在每个表单中。用户控件甚至可以通过Visual Studio中的表单设计器添加到表单中。