コレクション

考えてみれば私がもっとも重宝しているのは、Collectionかもしれません。最初はCollectionBaseの継承をつかっていましたが、今はList(Of T)をメンバー変数に持つクラスです。

最も基本的な使用法は、画面で使うADO.NETのDataTable一つに対してこのクラスのインスタンスを一つ作ります。メソッドBindでは、画面のコントロールとテーブルの列名と列のデータ型を関連付けています。

Public Class CtrlBindingCollection
    Private m_lst As List(Of Cell)
    Sub New()
        m_lst = New List(Of Cell)
    End Sub

    Public Sub Bind(ByRef ctrl As Control, ByVal colName As String, ByVal DataType As Integer, ByVal blnNext As Boolean)
        m_lst.Add(New Cell(ctrl, colName, DataType, blnNext))
    End Sub

    Public Sub モード設定(ByVal blnEdit As Boolean)
   ' 全Cellのモード設定
    End Sub

    Public Sub テキストクリア()
   ' 全Cellのテキストクリア
    End Sub

    Class Cell
        Private m_Control As Control
        Private m_列名 As String
        Private m_データ型 As Integer

        Sub New(ByRef ctrl As Control, ByVal colName As String, ByVal intDataType As Integer, ByVal blnNext As Boolean)

            Me.m_Control = ctrl
            Me.m_列名 = colName
            Me.m_データ型 = intDataType

            If blnNext Then
                If Me.m_データ型 = DT.Str OrElse Me.m_データ型 = DT.Dte Then
                    SubFuncs.SetEnterKeyHandler(ctrl)
                Else
                    SubFuncs.SetSimpleEnterKeyHandler(ctrl)
                End If
            End If
   End Sub

        Sub モード設定(ByVal blnEdit As Boolean)
     .....
        End Sub

        Sub テキストクリア()
     .....
   End Sub
    End Class
End Class

今たとえば、Form コードの中で、
Private instCtrlBindingCollection As New CtrlBindingCollection

が宣言されているとして、[instCtrlBindingCollection.テキストクリア]でコントロールをすべてクリアすることができますし、[instCtrlBindingCollection.モード設定]では、画面コントロールのEnableの可能/不可能の切り替えができます。

すなわち、このコレクションに登録されたコントロールをいっせいに「どうこう」したいときにこのクラスのメソッドを一回コールすることで事足ります。

次回は実際何をしているかご紹介します。

error: コピーできません !!