2016-01-05 8 views
0

я поставил FlowLayoutPanel в WinForm и создал составной элемент управление с именем ContactWvb.net динамические экранного динамические элементы управления

с петлей я заполнил FlowLayoutPanel с несколькими ContactW объектов

For index = 0 To 99 
    Dim Contact As New ContactW.BaseContactW() 
    Contact.Tag = index 
    'Here I could set properties 
    '.... 
    AddHandler Contact.ContactClickEvt, AddressOf GenericClick 
    flp_ContaninerContacts.Controls.Add(Contact) 
Next 

GenericClick получает объект ContactW, и я могу его изменить.

Public Sub GenericClick(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Dim cwa As ContactW.BaseContactW = CType(sender, ContactW.BaseContactW) 
    MessageBox.Show("you have clicked " & CType(CType(sender, System.Object).Tag, String)) 
    cwa.ContactName = "Robert" 
End Sub 

Но я хотел бы изменить свойства ContactW с помощью индекса или тега, например так:

Contact(21).ContactName = "Julia" 
Contact(21).ContactAge = 35 
Contact(21).ContactStatus = "Married" 

Как я могу добиться этого?

ответ

1

Коллекция Controls, в которую вы добавили элементы управления, в первую очередь, представляет собой коллекцию, поэтому вы просто индексируете ее так же, как и любую другую коллекцию.

+0

, который является коллекцией элементов управления? flp_ContaninerContacts.Controls? – Paul

+0

Если я попробую 'flp_ContaninerContacts.Controls (1)' Я не могу получить доступ к свойствам. – Paul

+0

Вы получаете ссылку 'Control', потому что коллекция может содержать любой тип управления. Вы должны указать его как особый тип для доступа к членам этого типа. – jmcilhinney

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