循环遍历具有特定名称的所有组合框

时间:2014-11-08 13:54:06

标签: vb.net

是否可以循环使用具有特定名称的所有组合框。例如,我在一个组合框中有25个组合框我需要循环其中的20个(这20个中的每一个都有名称special_combo_1,special_combo_2等等,但另外5个有另外的名字所以我需要保持原样)并改变它们的宽度at一次或更改文本或其他任何内容。

2 个答案:

答案 0 :(得分:0)

您可以使用Control.Controls获取GroupBox包含的所有控件。 然后,您应该使用TryCast(Object, Object)将每个Control对象转换为ComboBox类型。 您可以使用String.StartsWith(String)检查前缀。

For Each Item As Control In GroupBox1.Controls
    Dim ComboBoxItem As ComboBox = TryCast(Item, ComboBox)
    If ComboBoxItem IsNot Nothing Then
        If ComboBoxItem.Name.StartsWith("special_combo_") Then
            ' Code here
        End If
    End If
Next

答案 1 :(得分:-1)

使用OfType从控件集合中创建一组组合框。没有TryCast需要如此增加表现。然后使用Where子句对其进行过滤,以进一步向下钻取。现在你只迭代一小部分控件。

Dim spComboboxes = 
    GroupBox1.Controls.OfType(Of Combobox)().
    Where(Function(cb) cb.Name.StartsWith("special_combo_")).ToList()

迭代组合框:

For Each cb In spComboboxes
  'do something
Next