回答編集履歴

4

追記

2019/02/07 06:31

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -26,9 +26,19 @@
26
26
 
27
27
  ### 追記
28
28
 
29
- クラス側にFormA.ButtonAと書くとグループ内部のボタンが複数フォームにまたがる場合に
29
+ クラス側に`FormA.ButtonA`と書くとグループ内部のボタンが複数フォームにまたがる場合に
30
30
 
31
31
  意図しないタイミングでフォームのインスタンスが生成される可能性があるかと思います。
32
+
33
+
34
+
35
+ また、実際に開いたインスタンスがクラス内で定義したインスタンスと別の可能性もあるので、
36
+
37
+ クラス側での`FormA.ButtonA`はバグを埋め込みやすくしているだけだと思います。
38
+
39
+
40
+
41
+
32
42
 
33
43
  私なら、下記のように書くと思います。
34
44
 

3

修正

2019/02/07 06:31

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  ### 追記
28
28
 
29
- 個人的にクラス側にFormA.ButtonAと書くとグループ内部のボタンが複数フォームにまたがる場合に
29
+ クラス側にFormA.ButtonAと書くとグループ内部のボタンが複数フォームにまたがる場合に
30
30
 
31
31
  意図しないタイミングでフォームのインスタンスが生成される可能性があるかと思います。
32
32
 

2

修正

2019/02/07 03:13

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -26,7 +26,9 @@
26
26
 
27
27
  ### 追記
28
28
 
29
- 個人的にクラス側にFormA.ButtonAと書くのに抵抗ので
29
+ 個人的にクラス側にFormA.ButtonAと書くとグループ内部ボタンが複数フォームまたがる場合に
30
+
31
+ 意図しないタイミングでフォームのインスタンスが生成される可能性があるかと思います。
30
32
 
31
33
  私なら、下記のように書くと思います。
32
34
 

1

追記

2019/02/07 03:11

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -21,3 +21,117 @@
21
21
  Next
22
22
 
23
23
  ```
24
+
25
+
26
+
27
+ ### 追記
28
+
29
+ 個人的にクラス側にFormA.ButtonAと書くのに抵抗があるので
30
+
31
+ 私なら、下記のように書くと思います。
32
+
33
+ ```VB.NET
34
+
35
+ Public Class ButtonGroupClass
36
+
37
+ Private _Buttons As New List(Of Button)
38
+
39
+
40
+
41
+ Public Sub AddButton(value As Button)
42
+
43
+ _Buttons.Add(value)
44
+
45
+ End Sub
46
+
47
+ Public Sub SetBackColor(c As Color)
48
+
49
+
50
+
51
+ For Each b As Button In _Buttons
52
+
53
+ b.BackColor = c
54
+
55
+ Next
56
+
57
+
58
+
59
+ End Sub
60
+
61
+
62
+
63
+ End Class
64
+
65
+ ```
66
+
67
+ Module
68
+
69
+ ```VB.NET
70
+
71
+ Public ButtonGroup As ButtonGroupClass() = {New ButtonGroupClass, New ButtonGroupClass, New ButtonGroupClass}
72
+
73
+ ```
74
+
75
+
76
+
77
+ Form1
78
+
79
+ ```VB.NET
80
+
81
+ Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
82
+
83
+
84
+
85
+ ButtonGroup(0).AddButton(Button1)
86
+
87
+ ButtonGroup(0).AddButton(Button2)
88
+
89
+ ButtonGroup(1).AddButton(Button3)
90
+
91
+ ButtonGroup(1).AddButton(Button4)
92
+
93
+ ButtonGroup(2).AddButton(Button5)
94
+
95
+ ButtonGroup(2).AddButton(Button6)
96
+
97
+
98
+
99
+ End Sub
100
+
101
+
102
+
103
+ Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
104
+
105
+ ButtonGroup(0).SetBackColor(Color.Red)
106
+
107
+ End Sub
108
+
109
+ ```
110
+
111
+ Form2
112
+
113
+ ```VB.NET
114
+
115
+ Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
116
+
117
+
118
+
119
+ ButtonGroup(0).AddButton(ButtonA)
120
+
121
+ ButtonGroup(0).AddButton(ButtonB)
122
+
123
+ ButtonGroup(1).AddButton(ButtonC)
124
+
125
+ ButtonGroup(1).AddButton(ButtonD)
126
+
127
+ ButtonGroup(2).AddButton(ButtonE)
128
+
129
+ ButtonGroup(2).AddButton(ButtonF)
130
+
131
+
132
+
133
+ End Sub
134
+
135
+
136
+
137
+ ```