2014-02-07 40 views
0
For a = 1 To row 
    For b = 1 To clmn 
      Form1.Controls("A" & CStr(a) & "T" & CStr(b)).Text = table.Rows(a)(b) 
    Next 
Next 

我得到一個錯誤 「System.NullReferenceException」對於VB遍歷文本框

我的文本框中的名稱是A1T1,A1T2,A1T3,....

如何使用循環這些文本框? 儘管當我從0,0開始表索引時,錯誤保持不變

+0

發生異常時'a'和'b'的值是什麼? – sloth

回答

0

DataTable使用從零開始的索引。所以你的第一行/列索引是0,而不是1

Dim key As String 

For a As Integer = 0 To (table.Rows.Count - 1) 
    For b As Integer = 0 To (table.Columns.Count - 1) 
     key = String.Format("A{0}T{1}", (a + 1), (b + 1)) 
     If (Me.Controls.ContainsKey(key)) Then 
      Me.Controls.Item(key).Text = Convert.ToString(table.Rows(a)(b)) 
     Else 
      Throw New ApplicationException("You need to create a control named: '" & key & "'") 
     End If 
    Next 
Next 
+1

不要忘記,他仍然需要控制ID爲1索引。將不會有一個文本框ID:'A0T0' –

+0

@JonEgerton你說得對。 –

+0

我想從第一行和第一列檢索數據,所以我索引a = 1和b = 1。儘管我從0,0開始,但錯誤仍然存​​在。但是,當我使用Form1.A1T1,Text = table.Rows(1)(1)它工作正常。 @Bjørn-RogerKringsjå – msk3002