回答編集履歴
4
追記
    
        answer	
    CHANGED
    
    | @@ -12,8 +12,13 @@ | |
| 12 12 | 
             
            ```
         | 
| 13 13 |  | 
| 14 14 | 
             
            ### 追記
         | 
| 15 | 
            -
            クラス側にFormA.ButtonAと書くとグループ内部のボタンが複数フォームにまたがる場合に
         | 
| 15 | 
            +
            クラス側に`FormA.ButtonA`と書くとグループ内部のボタンが複数フォームにまたがる場合に
         | 
| 16 16 | 
             
            意図しないタイミングでフォームのインスタンスが生成される可能性があるかと思います。
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            また、実際に開いたインスタンスがクラス内で定義したインスタンスと別の可能性もあるので、
         | 
| 19 | 
            +
            クラス側での`FormA.ButtonA`はバグを埋め込みやすくしているだけだと思います。
         | 
| 20 | 
            +
             | 
| 21 | 
            +
             | 
| 17 22 | 
             
            私なら、下記のように書くと思います。
         | 
| 18 23 | 
             
            ```VB.NET
         | 
| 19 24 | 
             
            Public Class ButtonGroupClass
         | 
3
修正
    
        answer	
    CHANGED
    
    | @@ -12,7 +12,7 @@ | |
| 12 12 | 
             
            ```
         | 
| 13 13 |  | 
| 14 14 | 
             
            ### 追記
         | 
| 15 | 
            -
             | 
| 15 | 
            +
            クラス側にFormA.ButtonAと書くとグループ内部のボタンが複数フォームにまたがる場合に
         | 
| 16 16 | 
             
            意図しないタイミングでフォームのインスタンスが生成される可能性があるかと思います。
         | 
| 17 17 | 
             
            私なら、下記のように書くと思います。
         | 
| 18 18 | 
             
            ```VB.NET
         | 
2
修正
    
        answer	
    CHANGED
    
    | @@ -12,7 +12,8 @@ | |
| 12 12 | 
             
            ```
         | 
| 13 13 |  | 
| 14 14 | 
             
            ### 追記
         | 
| 15 | 
            -
            個人的にクラス側にFormA.ButtonAと書くのに | 
| 15 | 
            +
            個人的にクラス側にFormA.ButtonAと書くとグループ内部のボタンが複数フォームにまたがる場合に
         | 
| 16 | 
            +
            意図しないタイミングでフォームのインスタンスが生成される可能性があるかと思います。
         | 
| 16 17 | 
             
            私なら、下記のように書くと思います。
         | 
| 17 18 | 
             
            ```VB.NET
         | 
| 18 19 | 
             
            Public Class ButtonGroupClass
         | 
1
追記
    
        answer	
    CHANGED
    
    | @@ -9,4 +9,61 @@ | |
| 9 9 | 
             
                For Each b As Button In Buttons
         | 
| 10 10 | 
             
                    b.BackColor = Color.FromArgb(100, 100, 255)
         | 
| 11 11 | 
             
                Next
         | 
| 12 | 
            +
            ```
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            ### 追記
         | 
| 15 | 
            +
            個人的にクラス側にFormA.ButtonAと書くのに抵抗があるので
         | 
| 16 | 
            +
            私なら、下記のように書くと思います。
         | 
| 17 | 
            +
            ```VB.NET
         | 
| 18 | 
            +
            Public Class ButtonGroupClass
         | 
| 19 | 
            +
                Private _Buttons As New List(Of Button)
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                Public Sub AddButton(value As Button)
         | 
| 22 | 
            +
                    _Buttons.Add(value)
         | 
| 23 | 
            +
                End Sub
         | 
| 24 | 
            +
                Public Sub SetBackColor(c As Color)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    For Each b As Button In _Buttons
         | 
| 27 | 
            +
                        b.BackColor = c
         | 
| 28 | 
            +
                    Next
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                End Sub
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            End Class
         | 
| 33 | 
            +
            ```
         | 
| 34 | 
            +
            Module
         | 
| 35 | 
            +
            ```VB.NET
         | 
| 36 | 
            +
             Public ButtonGroup As ButtonGroupClass() = {New ButtonGroupClass, New ButtonGroupClass, New ButtonGroupClass}
         | 
| 37 | 
            +
            ```
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            Form1
         | 
| 40 | 
            +
            ```VB.NET
         | 
| 41 | 
            +
                Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    ButtonGroup(0).AddButton(Button1)
         | 
| 44 | 
            +
                    ButtonGroup(0).AddButton(Button2)
         | 
| 45 | 
            +
                    ButtonGroup(1).AddButton(Button3)
         | 
| 46 | 
            +
                    ButtonGroup(1).AddButton(Button4)
         | 
| 47 | 
            +
                    ButtonGroup(2).AddButton(Button5)
         | 
| 48 | 
            +
                    ButtonGroup(2).AddButton(Button6)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                End Sub
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
         | 
| 53 | 
            +
                    ButtonGroup(0).SetBackColor(Color.Red)
         | 
| 54 | 
            +
                End Sub
         | 
| 55 | 
            +
            ```
         | 
| 56 | 
            +
            Form2
         | 
| 57 | 
            +
            ```VB.NET
         | 
| 58 | 
            +
                Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                    ButtonGroup(0).AddButton(ButtonA)
         | 
| 61 | 
            +
                    ButtonGroup(0).AddButton(ButtonB)
         | 
| 62 | 
            +
                    ButtonGroup(1).AddButton(ButtonC)
         | 
| 63 | 
            +
                    ButtonGroup(1).AddButton(ButtonD)
         | 
| 64 | 
            +
                    ButtonGroup(2).AddButton(ButtonE)
         | 
| 65 | 
            +
                    ButtonGroup(2).AddButton(ButtonF)
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                End Sub
         | 
| 68 | 
            +
             | 
| 12 69 | 
             
            ```
         | 
