2017-04-20 68 views
0

我有一個表格,我想填寫下面的代碼。目的是填寫放置在面板內的CheckBoxes,然後放置在一些TabPages中。這段代碼運行良好,以獲取CheckBox的值,但由於某種原因,它讀取我的ArrayList錯誤。例如,如果ArrayList填充「1,1,0,0,0 ...」,則它將每行讀取爲「1」,並相應地設置複選框。使用循環輸入arraylist值到複選框,給出錯誤的值

我也試過放置一個整數來看它是否重複了多次這個過程(ArrayList包含16行),整數竟然是16行的幾倍。我確實試圖用if語句限制循環,即使它在給定數字後停止,它仍會產生錯誤的答案。

我已經停下來了,不知道爲什麼這段代碼不會做到這一點。幫助將不勝感激。

我應該提到'tabell'是我嘗試從中拉出數據的ArrayList。

(此外,如果此之前已要求,我對重複的問題,真誠地抱歉..)

For Each rad In tabell 
     For Each tb In TabControl1.Controls.OfType(Of TabPage)() 
      For Each pnl In tb.Controls.OfType(Of Panel)().OrderBy(Function(c) c.TabIndex) 
       For Each cb In pnl.Controls.OfType(Of CheckBox)() 
         If rad = 1 Then 
          cb.Checked = True 
         End If 
       Next 
      Next 
      Next 
    Next 

回答

0

你通過所有的複選框爲每個值在tabel1循環,因爲你從來沒有取消選中框,第一個1值將檢查所有的框,這就是他們將如何留下來。

我猜你想根據找到的複選框的順序使用tabel1中的對應值(我認爲它不一定與它們在屏幕上顯示的順序相匹配,因此您可能必須排序複選框):

Dim idx = 0 
For Each tb In TabControl1.Controls.OfType(Of TabPage)() 
    For Each pnl In tb.Controls.OfType(Of Panel)().OrderBy(Function(c) c.TabIndex) 
     For Each cb In pnl.Controls.OfType(Of CheckBox)() 
      cb.Checked = tabel1(idx) = 1 
      idx += 1 
     Next 
    Next 
Next