VB中的With语句中有多个对象?

时间:2012-11-19 00:17:19

标签: vb.net

我在VB中有很多标签用于With语句来设置它们的属性。

问题 有什么方法可以做以下事情:

With lblA, lblB, lblC
    .fontColor = color.Red
End With

这是可能的,还是我必须为每个人手动执行With声明?

3 个答案:

答案 0 :(得分:5)

您的解决方案有一个更短且更易读的版本:

For Each lbl As Label In {lblA, lblB, lblC}
  With lbl
    '...
  End With
Next

答案 1 :(得分:4)

我会将这些类型的项目保留在列表中,然后对它们应用每个循环,假设它们都是相同类型(或至少是基本类型)。假设您使用的是label类型的控件,这将是一个解决方案。请注意,我已将.fontColor修改为.ForeColor,因此此示例适用于Label类:

Dim lblList as new List(of Label) ({lblA, lblB, lblC})
lblList.ForEach(sub(x) x.Fore Color = color.red)

由于您已经发布了解决方案,您仍然可以执行以下操作以避免对您所创建的阵列进行迭代循环(这就是为什么我将其作为列表执行),而不必考虑数组大小或任何内容:

 lblList.ForEach(Sub(x)
                    With x
                       .BackColor = Color.Black
                       .Dock = DockStyle.Top
                       .TextAlign = ContentAlignment.MiddleCenter
                    End With
                 End Sub)

答案 2 :(得分:0)

这是我最终做到的方式:

Dim arrayMe As Label() = {lblA, lblB, lblC}
For count = 0 To arrayMe.Length - 1 Step 1
    With arrayMe(count)
        .BackColor = Color.Black
        .Dock = DockStyle.Top
        .TextAlign = ContentAlignment.MiddleCenter
    End With
Next

还有其他方法可以做到,但我发现这很有用。