2015-08-15 47 views
2

我想創建一個VB.Net類的方法,驗證用戶在窗體上輸入的數據。我希望能夠從我的代碼中的所有表單中調用此方法。我希望通過創建一個方法來實現這一點,該方法遍歷表單上的所有Listbox和Textboxes,確保它不爲空,並且如果它爲空則爲用戶提供另一個輸入有效數據的機會。這是每種形式的子過程,但我有四種形式,我想寫一次代碼,並從我所有的四種形式中調用它。創建一個VB.Net類的方法,可以驗證窗體控件

我的問題是,爲什麼我得到一個錯誤信息「控件未聲明,或者它可能無法訪問由於其保護級別」時,我的代碼就像下面我For Each循環:

Public Class formsValidationClass 

    Public Function validate() 

     'validation happens here for either a List Box or Text 
     For Each ctrl As Control In Controls 
      If TypeOf ctrl Is TextBox Or TypeOf ctrl Is ListBox Then 
      End If 
     Next 'form validation ends here 
    End Function 

End Class 
+0

你有包括System.Windows.Forms的或通過從你正在尋找驗證表單引用的每個實例相關聯的形式? – Inisheer

回答

1

您的課程或其validate方法需要訪問您要驗證的表單的方法。做到這一點的一種方法是將表單驗證爲validate方法。

Public Function validate(myForm as Form) As Boolean 
    For Each ctrl As Control In myForm.Controls 
     If TypeOf ctrl Is TextBox Or TypeOf ctrl Is ListBox Then 
      'do something about the control 
     End If 
    Next 
End Function 

或者,您可能希望與存儲的formsValidationClass

Public Class formsValidationClass 
    Private myForm as Form 

    Sub New(theForm as Form) 
     myForm = the Form 
    End Sub 

Public Function validate() As Boolean 
    For Each ctrl As Control In myForm.Controls 
     If TypeOf ctrl Is TextBox Or TypeOf ctrl Is ListBox Then 
      'do something about the control 
     End If 
    Next 
End Function 
+0

謝謝。這解決了我的問題 –

0

你似乎沒有將形式的背景傳遞給你的班級。 (至少在本例中)

請明白我的意思(固定版本):

Public Function validate(form As Form) 

    For Each ctrl As Control In form.Controls 
    .... 

這是唯一的例子。您可以通過其他各種方式引入form,例如通過您的課程的屬性或構造函數。

+0

這解決了我的問題。謝謝 –

相關問題