从标签页中的实例化用户控件访问数据?

时间:2016-07-08 11:40:59

标签: vb.net user-controls

我有一个带有按钮的表单,该按钮使用用户控件复制第二个选项卡的内容(用户控件)(即:添加一组新的文本框,如地址2,3等)。到目前为止,我已经能够在新创建的标签页上添加标签页并实例化用户控件,但我不知道如何使用用户控件从每个新实例化的标签页访问数据。我认为我需要声明每个新实例化的DetailTab实例(包含Details用户控件的类),但我并不确定。我不是专业的程序员,所以我会非常感激一种基本的解释。

Public Class KMCProfile 'Class with the actual UI
  Private Sub AddDetails_Click(sender As Object, e As EventArgs) Handles AddDetails.Click
      KMC.TabPages.Add(New DetailTab)
      KMC.TabPages(tabCount).Name = "KMCDetails" & tabCount
      KMC.TabPages(tabCount).Text = "KMC Details (" & tabCount & ")"
      KMC.SelectedTab = KMC.TabPages(tabCount)
      tabCount += 1

      If tabCount = 5 Then
          AddDetails.Enabled = False
      End If
  End Sub
End Class

Public Class DetailTab
    Inherits TabPage

    Public Sub New()
        Controls.Add(New Details)
    End Sub
End Class

Public Class Details ' The User Control Class
  Public Property ISO1 as String
  ...
  Public Property ISO40 as String

  Public Sub FetchData()
    ISO1 = txtISO1.text
    ...
    ISO40 = txtISO40.text
  End Sub
End Class

1 个答案:

答案 0 :(得分:0)

如果您不确定某个特定选项卡是否包含您的usercontrol,那么您可以查询Controls集合并要求返回类型为Details的控件

 Dim current = KMC.TabPages(pageIndex).Controls.OfType(Of Details)().FirstOrDefault()
 if current IsNot Nothing Then
      Dim text = current.ISO1
      .. get the other properties here 
 End If

用户控件的实例保存在tabpage的Controls集合中,因此您可以检索已添加的实例查询TabPage(x)控件集合。

当然,如果您需要识别正在处理的用户控件,则可以添加用户控件本身中的某些属性(或者仅使用用户控件名称)

 if current.Name = "KMCDetails1" Then 
     .....