考えてみれば私がもっとも重宝しているのは、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の可能/不可能の切り替えができます。
すなわち、このコレクションに登録されたコントロールをいっせいに「どうこう」したいときにこのクラスのメソッドを一回コールすることで事足ります。
次回は実際何をしているかご紹介します。