2013-07-01 57 views
0

我有VB 2008 WinForms應用程序。的WinForms VB 2008的文本框驗證問題

在我店的形式我有11個文本框領域,我想驗證他們的8,無論是強制性的,或要求的格式,如英國郵編,英國電話號等

我現在的問題是,當驗證開始時,它首先確認最後的文本字段(或似乎是)

這裏是我的代碼

For Each oCtrl As Control In Me.Controls 
    If TypeOf oCtrl Is TextBox Then 
     oCtrl.Focus() 
     If Validate() = False Then 

      Exit Sub 

     End If 
    End If 
Next 

有什麼不對嗎?

回答

1

有什麼不對嗎?

控件集合不排序或分組。你的循環將以任何順序訪問它們。

沒有更多的代碼,這是很難說如何解決它。然而,小費可能是爲了。使用相同的處理程序來處理每個文本框的驗證事件。這樣,您可以將用戶保留在該文本框中,直到輸入有效。

是有可能的項目添加到集合在他們的標籤索引的順序形式顯示的情況下,我該怎麼做嗎?

一覽表(中文本框)和一個自定義分類器很可能會去

Dim AllTB As New List(Of TextBox) 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
    AllTB.AddRange(Me.Controls.OfType(Of TextBox)) 
    AllTB.Sort(Function(x, y) x.TabIndex.CompareTo(y.TabIndex)) 
End Sub 

要遍歷文本框的方式使用:

For Each tb As TextBox in AllTB 

因爲文本框是在通過引用列出您可以獲取或設置文本框中的任何屬性以及任何更改,都會反映在您的表單中。您還可以使用文本框,標籤屬性等的順序名稱並按此排序。

+0

感謝您的幫助。是否有可能將這些項目添加到集合中,按照它們在表單事件上的標籤索引順序,我該怎麼做? –

+0

我的答案已更新。 – tinstaafl

+0

感謝您的幫助,現在工作得很好 –