複数のオブジェクトに背景色等のプロパティをまとめて設定したいと思います。
とりあえず、図のようなボタンの配列で
ButtonA1 と ButtonB1
ButtonA2 と ButtonB2
ButtonA3 と ButtonB3
をそれぞれまとめてプロパティ設定したいグループです。
Button等のオブジェクトで、ある特定のひとまとまりに対してまとめて操作することによって、後で仕様変更が発生しても手直しする箇所を少なくしたいのが狙いです。
例えば ButtonC1、ButtonC2、ButtonC3 が後から追加されても1か所手直しするだけで対応できるようにしたいです。
Interfaceを宣言して利用すべきかと思って後述のコードを組みましたが、この内容だと「ButtonA2」だけが青くなります。「ButtonA2」と「ButtonB2」を同時に青くしたいです。
いろいろ検証してみた結果、Class1.Button の Property 内の Set (2)の内容は関係なく、Get 側(1)の値が反映されている模様。
どのように修正すれば上記の目的通りの動作になりますでしょうか?
そもそも根本的にやり方が違うのでしょうか?
- Form1のコード
VB
1Public Class Form1 2 3 'とりあえずClass1をインスタンス化してみる 4 Dim CtrlClass As New Class1 5 6 '同じ番号のボタンをまとめて青塗りにする(「Change」ボタンのイベント) 7 Private Sub Button_Change_Click(sender As Object, e As EventArgs) Handles Button_Change.Click 8 CtrlClass.Button(1).BackColor = Color.FromArgb(100, 100, 255) 9 End Sub 10End Class
- Class1のコード
VB
1Public Class Class1 : Implements IButtons 2 Public Interface IButtons 3 Property Button() As System.Windows.Forms.Button() 'なぜか配列の範囲を指定できないので()のみで配列宣言 4 End Interface 5 6 '各ボタンのプロパティ 7 Property Button() As System.Windows.Forms.Button() Implements IButtons.Button 8 Get 9 Return {Form1.ButtonA1, Form1.ButtonA2, Form1.ButtonA3} '★←(1)どうもこちらの値が参照されているらしい 10 End Get 11 Set(value As System.Windows.Forms.Button()) '★←(2)こんな風に複数のボタンのプロパティをまとめて適用したい 12 Dim AGroup_Buttons() As System.Windows.Forms.Button = {Form1.ButtonA1, Form1.ButtonA2, Form1.ButtonA3} 13 Dim BGroup_Buttons() As System.Windows.Forms.Button = {Form1.ButtonB1, Form1.ButtonB2, Form1.ButtonB3} 14 15 AGroup_Buttons = value 16 BGroup_Buttons = value 17 End Set 18 End Property 19 20End Class
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/06 02:16
2019/02/06 02:20
2019/02/06 02:59