我正在嘗試收集一些文本框并針對輸入的內容進行測驗。我知道這已經回答了好幾次,但大多數情況下都想在面板或表單中收集所有控制元件,我想選擇每個文本框。
我正在嘗試這個,基于另一個堆疊溢位答案回圈通過 vb.net 中的文本框,但它對我不起作用。空參考例外,大概我沒有實體化我的物件,但我沒有,使用 new 關鍵字.... 總之,為什么這不起作用?
Dim boxes As New List(Of TextBox)() From {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TestTextBox()
End Sub
Private Sub TestTextBox()
For Each tb As TextBox In boxes
If String.IsNullOrEmpty(tb.Text) Then
MessageBox.Show("Text box is empty")
ElseIf tb.Text.Length > 10 Then
MessageBox.Show("Characters limited to 10")
End If
Next
End Sub
uj5u.com熱心網友回復:
您會null在回圈中獲得串列物件,因為您創建了一個類集合并對其進行初始化以添加尚未創建或初始化的控制元件。boxes是在表單的建構式呼叫以InitializeComponent();創建和初始化托管控制元件(包括相關文本框)之前創建的。因此,您需要等待創建控制元件才能訪問它們。
宣告一個List<TextBox>:
Public Class YourForm
Private ReadOnly boxes As List(Of TextBox)
End Class
然后在建構式中,實體化它并傳遞元素:
Public Class YourForm
Private ReadOnly boxes As List(Of TextBox)
Sub New()
InitializeComponent()
boxes = New List(Of TextBox) From {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
End Sub
End Class
旁注,您可以將MaxLength文本框的屬性設定為10并省略此ElseIf tb.Text.Length > 10 Then...
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484746.html
標籤:VB.net
上一篇:VB:如何遍歷標簽并更改其文本?
下一篇:自定義次要y軸值
