5

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

问题 有什么办法可以做如下的事情:

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

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

4

3 回答 3

6

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

For Each lbl As Label In {lblA, lblB, lblC}
  With lbl
    '...
  End With
Next
于 2012-11-19T03:16:36.010 回答
5

我会将这些类型的项目保留在一个列表中,然后对它们应用一个 for each 循环,假设它们都是相同的类型(或至少是基本类型)。假设您正在使用类型的控件,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)
于 2012-11-19T00:30:41.407 回答
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

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

于 2012-11-19T01:07:55.297 回答