【问题标题】:Passing Values from Multiple UserControls从多个用户控件传递值
【发布时间】:2016-05-17 07:01:30
【问题描述】:

注意:可以找到类似的问题here

如何从多个用户控件传递值?上面链接中的问题提供了答案,但是在我的情况下,我发现答案非常乏味,并且值的传递存在延迟。 (在 UserControl1 中提交文本框或标签的更改以查看 UserControl2 中的任何值传递时,我必须多次往返于 UserControl1 和 UserControl2。)

无论哪种方式,由于我有多个用户控件,其中每个控件都有许多文本框、标签和组合框,我非常不想为每个控件创建单独的子例程和事件处理程序,并且每个控件都具有我想要的值通过。

有没有更好的方法?我在想类似...

'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

上面的代码显然不像我想象的那样工作,我怎样才能用最少的代码实现类似的东西?

已编辑:我有多个自定义用户控件,我在其中用作“视图”。在每个 UserControl 中都有标签、文本框和组合框。我有一个 Panel1,其中在触发事件时,将在面板中显示 UserControl(1-9);每个 UserControl 一次显示一个,并视事件而定。我希望能够将每个 UserControl(1-9) 中的值传递给 UserControl10 的标签、文本框或组合框等。

【问题讨论】:

  • "如何从多个用户控件传递值?"这个问题几乎毫无意义。你真正想做的是什么?请提供您想要达到的目标的完整和清晰的解释。请记住,用户控件只是一个控件,因此它们会像任何其他控件一样被对待。没有什么神奇的方法可以从用户控件中获取多个数据项。
  • @jmcilhinney 很抱歉不清楚。我已经编辑了我的问题。希望它更清楚,如果不是我为我缺乏描述而道歉..(新到 vb)

标签: vb.net user-controls


【解决方案1】:

我猜最后三行不在 Sub 中。它们可能不工作,因为它们在显示表单之前执行。

如果你想在你的程序中自动更新它们,你应该把它们放在一个 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 事件中来在每次显示表单时执行此操作。

或者您可以通过将其放置在 Timer 的 .tick 事件中来每隔一段时间自动执行此操作。

或者您可以选择在程序中的某些点更新它们,方法是将子放在代码中的某个位置。

【讨论】:

  • 感谢您的回答。我能够根据您的回答合并类似的内容并使其发挥作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多