投稿者 neptune  (社会人) 投稿日時 2009/4/24 07:37:33
お邪魔します。

葉月さんが既にサンプルUPされてますが、せっかく書いたのでUPしておきます。

コントロール配列ではないですが、ボタン処理用のクラスの一番簡単な奴書いてみました。
vb6時代と同じ考え方で書いてます。VB5はあまりやってないのですが、多分同じだったような???
FormにButtonを4つ配置、以下をコピペで動くと思います。


Public Class Form1
    Private clsButton() As CtrlButtons

    Private Sub Form1_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load
        ReDim clsButton(2)
        For i As Integer = 0 To 2
            clsButton(i) = New CtrlButtons
        Next
        clsButton(0).uctButton = Me.Button1
        clsButton(1).uctButton = Me.Button2
        clsButton(2).uctButton = Me.Button3
        Me.Button4.Text = "ButtonのTextプロパティ変更を変更してみる"

    End Sub

    Private Sub Button4_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button4.Click

        Dim ret As Boolean = EditButtonText()
    End Sub


    'ButtonのTextプロパティ変更(戻り値手抜きしてます) 
    Public Function EditButtonText() As Boolean

        For i As Integer = 0 To clsButton.Count - 1
            clsButton(i).uctButton.Text = "Textプロパティ変更 その" & i.ToString()
        Next
        Return True
    End Function

    'ボタン処理用 
    Private Class CtrlButtons
        Private WithEvents mbtn As Button

        Public Property uctButton() As Button
            Get
                Return mbtn
            End Get
            Set(ByVal value As Button)
                mbtn = value
            End Set
        End Property

        Private Sub mbtn_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles mbtn.Click
            Const csMsg As String = "変更しました。"
            Const csFind As String = "変更"
            Dim btn As Button = DirectCast(sender, Button)

            If btn.Text.Contains(csFind) Then
                btn.Text = btn.Name
            Else
                btn.Text = btn.Name & " : " & csMsg
            End If
        End Sub
    End Class

End Class

CtrlButtonsですが、CtrlButtonとでも名前をつけ直し、CtrlButtonをコレクションItemとする
CtrlButtonsを新たに作れば、EditButtonTextなんかは、その中に持っていくと、
addメソッドや、removeメソッドなど必要な機能をを実装するとキチンとした、
コレクションが出来上がります。

皆さんへ>
ここで私も「質問」お願いします。
オブジェクト変数の開放を上記のサンプルでは行ってません。
やはり、デストラクタやformのformcloseイベントとか、Disposedイベントで処理しなければ
駄目なんでしょうか?するようには心掛けてますけど、本当に必要なのかどうかが知りたいです。


Kintonun  さん>
#お願いですが、「50の手習い」ってのできればやめてもらえません^ ^;;
#私も同じようなおっさんなんで、かなり抵抗あります。手習いには後10年ほど早いですよ。