泛型与反射的应用范例


    ''' <summary>
    ''' 新的填充函数,使用了泛型,适用于ComboBox,listBox 和 CheckedListBox , DataGridViewComboBoxColumn
    '''   用反射操作 comboBox 或者 checkedListBox 或者 ListBox, 向其中填充可供选择的选项(来源于数据库查询)
    ''' </summary>
    ''' <typeparam name="T">comboBox 或者 checkedListBox</typeparam>
    ''' <param name="_control">具体的控件</param>
    ''' <param name="CmdTxt"></param>
    ''' <param name="ValueMember">值的选项</param>
    ''' <param name="DisplayMember">显示的选项</param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Sub fillBoxes_T(Of T)(ByRef _control As T, CmdTxt As String, ValueMember As String, DisplayMember As String)
 
        Dim rs As ADODB.Recordset = Nothing
        Dim RecCount As Integer = 0
        Dim dt As New DataTable
        Dim da As New OleDbDataAdapter()
        Dim cmd As New ADODB.Command
        cmd.CommandType = CommandType.Text
        cmd.ActiveConnection = conn
        cmd.CommandText = CmdTxt

        rs = cmd.Execute
        If Not rs.EOF Then
            '   RecCount = rs.RecordCount
            da.Fill(dt, rs)
            Dim ty As Type = _control.GetType()
            ty.GetProperty("DataSource").SetValue(_control, dt, Nothing)
            ty.GetProperty("DisplayMember").SetValue(_control, DisplayMember, Nothing)
            ty.GetProperty("ValueMember").SetValue(_control, ValueMember, Nothing)            
        End If
        dt = Nothing
        da = Nothing
        rs.Close()
        cmd.ActiveConnection = Nothing

    End Sub
 
   ‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘
'  下面是具体应用
dim  strCmd = "select code TPTR,rpad(code,length(code),' ')||rpad(' ',2,' ')||code_desc TPTR_desc from tbl_aml_config where code_category='TPTR' order by code_sequence"

  fillBoxes_T(cboTPTR, strCmd, "TPTR", "TPTR_desc")
     
 
 

猜你喜欢

转载自www.cnblogs.com/gaoleionline/p/12092209.html