如何在Windows窗体上迭代组件?

时间:2016-07-13 21:18:36

标签: vb.net visual-studio-2008 .net-cf-3.5

我在VB.NET中使用.NET Compact Framework 3.5的系统上使用VisualStudio 2008,并且有一个包含两个组件的表单,即Timers和Messageboxes。我的应用程序的一部分是一个子程序,它遍历表单中的所有控件并调整Front或BackColor等属性,以便我们可以按需重新打开整个应用程序。

虽然我正在迭代这些控件,但我还想遍历组件并在表单上设置Messageboxes的一些属性。我尝试使用For Each访问Me.components.Components,但该集合似乎是私有的。

For Each comp As Object in Me.components
  <do something>
Next comp

有没有办法迭代组件?

修改

我错误地认为me.components.Component是私有的。使用Me.components.Components我收到以下错误:

  

&#39;元件&#39;不是&#39; System.ComponentModel.IContainer&#34;的成员。

1 个答案:

答案 0 :(得分:0)

你可以用这个来循环计时器:....

For Each c As Object In Me.components.Components
        If TypeOf c Is Timer Then
            Dim tim As Timer = CType(c, System.Windows.Forms.Timer)
            tim.Interval = 12345
        End If
    Next

.Interval = 12345更改为您要对定时器执行的操作。

....并通过其他控件:

For Each ctrl As Control In Me.Controls
        If (ctrl.GetType() Is GetType(TextBox)) Then
            Dim txt As TextBox = CType(ctrl, TextBox)
            txt.BackColor = Color.LightYellow
        End If
    Next

使用控件类型更改TextBox

并且.BackColor = Color.LightYellow包含您要对控件执行的任何操作。

不幸的是,我不知道怎么做MesseageBoxes :(