2007年3月23日 星期五

以尋找控制項的方式取得大量控制項的值

最近在寫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開頭為名的文字方塊囉

沒有留言:

張貼留言