序
最近在寫VB的視窗程式時~因為一拉了一堆控制項讓使用者將值填進去,結果就要寫程式一個一個把值讀進來~
由於不是陣列型的控制項(我也不知怎麼讓這些控制項變陣列),所以就以命名的方式,將這些控制項命名為TXT1、TXT2...
這時就須要以名字找控制項了,所以我寫了個小函式來輔助我~
程式
將以下這段程式擺在控制項所在的Form的程式碼中~
Public Function findControl(ByVal name As String) As Control
Dim result As Control = Nothing
Dim find As Control() = Me.Controls.Find(name, True)
If find.Length > 0 Then
result = find(0)
End If
Return result
End Function
呼叫
這時呼叫findControl("控制項名稱"),有找到就會傳回該控制項,沒找到就會傳回Nothing。
利用這樣的函式,只要控制項命名得當,就能動態依照控制項數量將資料讀進來。例如,
Dim txtName As TextBox = Nothing
Dim SA As new ArrayList
Dim i As Integer = 1
Do
txtName = findControl("SA" + i.ToString)
If Not txtName Is Nothing Then
SA.Add(txtName.Text)
End If
i = i + 1
Loop Until txtName Is Nothing
這樣我就取得了一個文字陣列,這個文字陣列的值都來自以SA開頭為名的文字方塊囉