在程式設計中,本人遇到這樣一個問題,為了顯示介面的需要把各個功能塊寫成"使用者控制項" ,並在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 Sub Display()(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 Sub Display()(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”
通過這個例子我們看到,如果我們需要傳遞類型的時候可以使用泛型程式來完成!