With
VBには、プロパティを設定するためにステートメントで使用するラベルがたくさんあります。
問題 私が次のようなことをすることができる方法はありますか?
With lblA, lblB, lblC
.fontColor = color.Red
End With
これは可能ですか、それともそれぞれに対して手動でWith
ステートメントを実行する必要がありますか?
With
VBには、プロパティを設定するためにステートメントで使用するラベルがたくさんあります。
問題 私が次のようなことをすることができる方法はありますか?
With lblA, lblB, lblC
.fontColor = color.Red
End With
これは可能ですか、それともそれぞれに対して手動でWith
ステートメントを実行する必要がありますか?
ソリューションには、より短く、より読みやすいバージョンがあります。
For Each lbl As Label In {lblA, lblB, lblC}
With lbl
'...
End With
Next
それらのタイプのアイテムをリストに保持し、それらがすべて同じタイプ(または少なくとも基本タイプ)であると仮定して、それらに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)
これが私がそれをやった方法です:
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
それを行う方法は他にもありますが、これは便利だと思いました。