2016-05-16 5 views
0

Примечание: Аналогичный вопрос можно найти here.Передача значений из нескольких UserControls

Как передать значения из нескольких элементов управления пользователя? Вопрос в ссылке выше дает ответ, однако я считаю, что ответ очень утомительный в моей ситуации, и есть задержка в передаче значений. (Мне нужно циклически переключаться между UserControl1 и UserControl2 и UserControl2 несколько раз, в то время как в UserControl1 выполняется изменение текстового поля или метки, чтобы увидеть любую передачу значений в UserControl2.)

В любом случае, поскольку у меня есть несколько UserControls, много текстовых полей, ярлыков и comboboxes, мне очень не хотелось бы создавать отдельные подпрограммы и EventHandlers для каждого элемента управления со значением, которое я хотел бы передать.

Есть ли лучший способ? Я думал, что-то вроде ...

'In UserControl10 
Dim UserControl1 As New UserControl1 
Dim UserControl2 As New UserControl2 
Dim UserControl3 As New UserControl3 

UC10Label1.Text = UserControl1.Label1.Text 
UC10TextBox1.Value = UserControl2.TextBox1.Value 
UC10ComboBox1.Text = UserControl3.ComboBox1.SelectedItem 

Код выше, очевидно, не работает так, как я бы себе представить, как я могу достичь чего-то подобное с наименьшим количеством кода?

Отредактировано: У меня есть несколько пользовательских UserControls, в которых я использую как 'views'. В каждом UserControl есть метки, текстовые поля, & comboboxes. У меня есть Panel1, в котором при запущенном событии будет отображаться UserControl (1-9) на панели; каждый UserControl отображается по одному и зависит от события. Я хочу иметь возможность передавать значения из каждого UserControl (1-9) в ярлыки, текстовые поля UserControl10 или с помощью полей со списком и т. Д.

+2

«Как передать значения из нескольких элементов управления пользователя?» Этот вопрос почти бессмыслен. Что вы на самом деле хотите сделать? Пожалуйста, предоставьте полное и ясное объяснение ТОЧНО, чего вы пытаетесь достичь. Имейте в виду, что пользовательский элемент управления - это просто элемент управления, поэтому они обрабатываются как любой другой элемент управления. Нет никакого волшебного способа получить несколько элементов данных из пользовательского элемента управления. – jmcilhinney

+0

@jmcilhinney жаль, что не ясна. Я отредактировал мой вопрос. Надеюсь, это яснее, если не извиняюсь за отсутствие описания. (New vb) – NuWin

ответ

1

Я предполагаю, что последние три строки не находятся в Sub. Они, вероятно, не работают, потому что они выполняются до того, как форма была показана.

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

Private Sub UpdateUserControls() 
    Me.SuspendLayout() 
    UC10Label1.Text = UserControl1.Label1.Text 
    UC10TextBox1.Value = UserControl2.TextBox1.Value 
    UC10ComboBox1.Text = UserControl3.ComboBox1.SelectedItem 
    Me.ResumeLayout() 
End Sub 

В зависимости от того, когда вы хотите обновить эти элементы управления, вы можете сделать это каждый раз, когда форма отображается путем размещения выше Sub в .Shown событий формы.

Или вы можете делать это автоматически каждый раз, помещая его в событие .tick таймера.

Или вы можете изменить их в определенных точках вашей программы, поместив sub в свой код.

+0

Спасибо за ваш ответ. Я смог включить что-то подобное на основе вашего ответа и заставить его работать. – NuWin

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