2016-07-08 6 views
0

У меня есть форма с кнопкой, которая реплицирует содержимое (элементы управления пользователя) второй вкладки с помощью пользовательского элемента управления (то есть: добавление нового набора текстовых полей, таких как адрес 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 

ответ

0

Если вы не совсем уверены, если вкладка конкретных содержит свой UserControl или нет, то вы можете запросить коллекцию Controls и попросить вернуть Al элементы управления типа Подробнее

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 (x).

Конечно, если вам необходимо определить пользовательский элемент управления, который вы обращаетесь, то какое-то свойство в пользовательском элементе управления может сам быть добавлены (или просто использовать имя пользовательского элемента управления)

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

Это на самом деле не в каждой из страниц вкладок, подумайте об этом так: Tab 2 содержит поля Address 1. Если пользователь нажимает кнопку «Добавить адрес», он добавляет новую вкладку с элементами управления пользователя. На самом деле, это не так просто, как есть 40 элементов управления, где мне нужно получить данные из пользовательского элемента управления. Есть ли в любом случае, что я могу получить значения свойств из экземпляра пользовательского элемента управления? Или есть лучший способ сделать это? –

+0

Я вижу, тогда страница может содержать один из ваших пользовательских элементов управления или нет. Проблема может быть решена с использованием расширения OfType https://msdn.microsoft.com/en-us/library/bb360913(v=vs.110).aspx – Steve

Смежные вопросы