5

WithVBには、プロパティを設定するためにステートメントで使用するラベルがたくさんあります。

問題 私が次のようなことをすることができる方法はありますか?

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

それらのタイプのアイテムをリストに保持し、それらがすべて同じタイプ(または少なくとも基本タイプ)であると仮定して、それらにforeachループを適用します。タイプのコントロールを使用していると仮定するとlabel、これが解決策になります。この例がLabelクラスで機能するように変更.fontColorしたことに注意してください。.ForeColor

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 に答える