#vb.net #list #properties #user-controls #flowlayoutpanel
#vb.net #Список #свойства #пользовательские элементы управления #flowlayoutpanel
Вопрос:
У меня есть программа на Visual Basic, в которой я открываю небольшое окно (frmChild) нажатием кнопки на главной форме (frmMain). В frmChild есть панель FlowLayoutPanel, в которую я добавляю UserControls на основе длины и значений списка строк. Пользовательский элемент управления состоит из метки и текстового поля.
Материал «дизайн» выполнен (например, изменение размера окна). Моя проблема состоит в том, чтобы получить текст, который пользователь пишет в текстовых полях UserControl. Я хотел бы снова записать строки в список, чтобы использовать этот список в frmMain
Мои свойства UserControl:
Public WriteOnly Property LblTxt As String
Set(value As String)
Label.Text = value
End Set
End Property
Public Property TBoxTxt As String
Get
Return TextBox.Text
End Get
Set(value As String)
TextBox.Text = value
End Set
End Property
Код, который добавляет UserControls:
Dim z As Integer = 0
For Each item As String In frmMain.lstNames
Dim uC As New UserControl
z = 1
With uC
.Name = "TextBox" amp; z
.LblTxt = item
End With
FlowLayoutPanel1.Controls.Add(uC)
Next
Мой вопрос разбит на основные части:
Как я могу получить текст текстового поля UserControl, который находится в FlowLayoutPanel и создается во время выполнения?
Заранее спасибо за чтение 🙂
Редактировать: я думаю, мне нужно что-то подобное в моем frmChild
For Each item As Object in FlowLayoutPanel.Controls
lstOtherNames.Add(item.TBoxTxt)
Next
Комментарии:
1. не
myUserControl.TBoxTxt
работает? Текст текстового поля является общедоступным .. или проблема с поиском пользовательских элементов управления в FLP?2. Вы запутываете свой вопрос, говоря о пользовательском элементе управления. У вас была бы точно такая же проблема, если бы вы добавили текстовые поля вместо этого. Вы можете выполнить итерацию FlowLayoutPanel1. Элементы управления, чтобы найти их обратно. Или просто не потерять их и сохранить список (MyUserControl). Вместо этого рассмотрите DataGridView.
3. Итак, откуда вы пытаетесь их найти, код формы? Ваше упоминание
findForm
иfindControl
звучит так, как будто вы хотите, чтобы эти твари разговаривали друг с другом (форма хостинга, безусловно, должна найти себя)?4. но где находится «мой код»?? конечно, у вас есть код как в форме, так и в usercontrol. Неясно, откуда вы хотите это сделать, поскольку я сказал, что ничего подобного
.findform
не потребуется, если «мой код» находится в форме.5. я все еще в растерянности, потому что вы не придаете этому никакого значения. 1) «TextBox» — ПЛОХОЕ название для usercontrol, потому что они будут смешиваться с обычными текстовыми полями. 2) Из формы, в которой размещен UCs, вы можете использовать
me.Controls.Find(searchName, True)
это для поиска ДОЧЕРНИХ элементов управления по имени или просто для поиска имени в коллекции элементов управления FLP. Вы также можете сохранить имена UCS в виде списка (строки). вам не нужно ничего НАХОДИТЬ в UC, так как текст отображается как свойство