在应用程序中使用特定UserControl的多个实例来引用自身

时间:2015-06-19 13:30:08

标签: .net vb.net user-controls tabcontrol

我在Visual Basic中使用了这个类:

class Dumbo
    Inherits System.Windows.Forms.UserControl

    Me.DataSet = New DataSet
    Me.BS = new System.Windows.Forms.BindingSource

Sub New()
    Me.BS.DataMember = "Table1"
    Me.DataSource = Me.DataSet
End Sub 

    'Other commands here for doing interactions with a SQL database

End Class

在主窗口上使用tabcontrol,我可以在第一个标签页上正常使用此用户控件,以便操作员可以输入数据或查看数据库中的先前记录,但现在我需要将其添加到另一个面板上标签控件

所以这样做:

dim Dumbo1 = new Dumbo      'Usercontrol on the first tab
dim Dumbo2 = new Dumbo      'Usercontrol on the second tab

我知道简单地写Dumbo2 = Dumbo1根本不起作用。我可以尝试将Dataset和Bindingsource设置为彼此,但是不是只有一种更简单的方法来引用该类吗?

编辑:如果您想引用同一个类,我可以使用C ++中的经验,使用类的地址(& foo)。

所以,如果你有这个:

ClassFoo foo = new ClassFoo();
ClassFoo *foo1 = &foo;

因此,我可以使用相同的类字段,属性和方法来读/写数据库。数据必须与ON BOTH TABPAGES

相同

我希望在VB.NET中有一个便宜又脏的技巧,我可以引用相同的Usercontrol,所以当用户切换tabpages时,它将是相同的数据,如能够读取相同的数据,和/或写入然后提交更改,它将反映其他页面上的修改。或者类似于ByRef(或C#中的Ref)来引用THAT类。

我希望稍微澄清一下。 : - )

1 个答案:

答案 0 :(得分:0)

您的tabcontrol控件可能包含您的New Dumbo变量。每个选项卡都会引用tabcontrol中的变量。

在TabPage中,您将拥有

CType(Me.Parent, CustomTabControl).Dumbo

另一个选项是当TabControl初始化每个选项卡时,它会发出变量。

在TabControl中你会有

someName = New Dumbo

For Each tab As TabPage In Me.TabPages
    tab.Tag = someName
Next