使用泛型程序简化代码设计

来源:互联网 发布:qq群文件无法下载 mac 编辑:程序博客网 时间:2024/05/16 15:22

 在程序设计中,本人遇到这样一个问题,为了显示界面的需要把各个功能块写成"用户控件" ,并在splitcontainer控件的panel2中显示,显示的代码如下:

 If Me.kj.Panel2.Controls.Count = 0 Then

           
Dim show_part As gl_byb    ’glby 就是要显示的用户控件

           show_part 
= New gl_byb     ‘实例化控件
           
Me.kj.Panel2.Controls.Add(show_part)   ’添加到Panel2中
           show_part.Dock 
= DockStyle.Fill
           show_part.Visible 
= True
        
Else
            
MsgBox("请先关闭当前窗口", MsgBoxStyle.Critical, "提 示")
End If

问题来了:总共有几十个功能模块要显示,难道要把上面的代码重复几十遍?!
从上面代码中我们可以看到在反复是红用中真正需要变化的只有“gl_byb”这个用户控件类,怎样才能简化代码呢?

实际上我们可以使用泛型程序来达到目的。首先定义一个同样的显示模块Display,如下:

  Private (Of T As {New, System.Windows.Forms.Control})()
        If Me.kj.Panel2.Controls.Count = 0 Then
            
Dim show_part As T
            show_part 
= New T
            
Me.kj.Panel2.Controls.Add(show_part)
            show_part.Dock 
= DockStyle.Fill
            show_part.Visible 
= True
        
Else
            
MsgBox("请先关闭当前窗口", MsgBoxStyle.Critical, "提 示")
        
End If
    
End Sub

 

代码中“Private (Of T As {New, System.Windows.Forms.Control})() ” 的含义是:

Of T 表示传递一个类型参数;
As {New, System.Windows.Forms.Control} 表示 对这个泛型程序进行约束,条件有两条:1.可以使用New ** 的无参数的方式实例化类;2.这个类型是基于System.Windows.Forms.Control类的

这样我们就定义了一个可以反复使用的显示代码,在具体的按钮事件中我们只需要调用这个泛型程序就可以了!调用的代码如下:

  Display(Of gl_byb)() ‘传递的类型是“gl_byb”

通过这个例子我们看到,如果我们需要传递类型的时候可以使用泛型程序来完成!

原创粉丝点击