如何从父窗体引用UserControl上的动态命名控件?

时间:2019-03-08 04:37:52

标签: vb.net textbox user-controls

如何从父窗体引用UserControl上的动态命名控件? (在Winforms中)。

我有一个父表单,但它可能加载20个左右的UserControls中的任何一个。我们将它们称为ucA, ucB, etc

每个UserControl都有不同数量的文本框,但命名为tbA01, tbA02, etc on ucA and tbB01, tbB02, etc on ucB

我将如何引用文本框的值?

我似乎无法直接引用UserControl的名称。我知道UserControl的名称是字符串,但是canot似乎将其强制转换为控件。同样,UserControl上的文本框也是如此。我确定我可以使用Control.Find()作为简单字符串中的文本框名称。但这似乎不起作用,我认为它只会在ParentForm上寻找控件,而不是UserControl上的控件集合。我假设将使用TryCast或DirectCast并在参数中使用Control.Find()的方法。但是我还没有找到解决方法。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

谢谢吉米!您的回答确实帮助我研究了提出解决方案的另一种方法。我现在正在工作。这是我用的:

Dim matches() As Control
matches = Me.Controls.Find(TblName, True)
If matches.Length > 0 AndAlso TypeOf matches(0) Is TextBox Then
    Dim tb As TextBox = DirectCast(matches(0), TextBox)
    ...
Endif