如何按名称访问自定义组件属性?

时间:2017-05-31 14:41:35

标签: vb.net user-controls vb.net-2010

我有一个自定义组件,里面有几个复选框和一个文本框;还有一个属性/变量,我称之为“秒”来存储时间。

此自定义控件多次添加到TabPage中,该TabPage在运行时位于另外两个TabPages内(嵌套)。

这些控件中的每一个都具有在运行时创建它们时分配的顺序名称。

TimerCtrl1

TimerCtrl2

TimerCtrl3

等...

现在我想设置这些复选框,文本框内的文本和名称中的变量seconds,以从具有每个控件的名称和属性的文件中加载配置文件。

我可以使用以下代码更改另一个控件,例如在设计时创建的文本框

Dim TxtIndex = ProgTab.Controls.Find(Values(0), True)
If TxtIndex.Length > 0 Then
   TxtIndex(0).Text = Values(1) 'Value to TextBox
End If

但是我无法以同样的方式访问我自己的自定义控件的属性。

我尝试做:

 Dim TimerIndex = ProgTab.Controls.Find(Values(0), True)
 If TimerIndex.Length > 0 Then
    TimerIndex(0).seconds = Values(1) 'Syntax ERROR
 End If

有关如何解决此问题的想法吗?

1 个答案:

答案 0 :(得分:3)

TimerIndex将是一组控件(Control())。如果要访问该属性,则需要将您可以访问的那个转换为特定控件。

DirectCast(TimerIndex(0), <user control type name here>).seconds = Values(1)

例如:

DirectCast(TimerIndex(0), TimerUserControl).seconds = Values(1)

- 此处,TimerUserControl是我的自定义用户控件的通用名称。

详细了解MSDN documentation上的DirectCast