2017-04-20 1 views
0

Ich habe ein Formular, das ich mit dem folgenden Code ausfüllen möchte. Der Zweck besteht darin, die CheckBoxen auszufüllen, die innerhalb der Panels platziert werden und dann in einige TabPages eingefügt werden. Dieser Code hat gut funktioniert, um den Wert der CheckBoxen zu erfassen, aber aus irgendeinem Grund liest er meine ArrayList falsch. Wenn die ArrayList beispielsweise mit "1, 1, 0, 0, 0 ..." gefüllt ist, liest sie jede Zeile als "1" und setzt die CheckBoxen entsprechend.mit einer Schleife zur Eingabe arraylist Wert in Kontrollkästchen, gibt falschen Wert

Ich habe auch versucht, eine Ganzzahl zu platzieren, um zu sehen, ob es den Prozess mehrmals wiederholt (die ArrayList enthält 16 Zeilen) und die ganze Zahl erwies sich als mehrere 16 Zeilen. Ich habe versucht, die Schleife mit einem if-Satz zu unterdrücken, und obwohl es nach einer bestimmten Zahl gestoppt hat, erzeugt es immer noch die falschen Antworten.

Ich bin zu einem Halt gekommen, und kann nicht herausfinden, warum dieser Code nicht den Trick machen wird. Hilfe würde sehr geschätzt werden.

Ich sollte wahrscheinlich erwähnen, dass 'Tabell' ist die ArrayList, die ich versuche, die Daten aus zu ziehen.

(auch wenn diese zuvor gestellt wurde, bin ich aufrichtig leid, die Frage zu wiederholen ..)

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 

Antwort

0

Sie durch alle Kontrollkästchen für jeden Wert in tabel1, und da Sie Looping nie Deaktivieren Sie die Kontrollkästchen, die erste 1 Wert wird alle Felder überprüfen und so werden sie bleiben.

Ich vermute, dass Sie den entsprechenden Wert von basierend auf der Reihenfolge verwenden möchten, die die Kontrollkästchen gefunden werden (die ich denke, muss nicht unbedingt die Reihenfolge, die sie auf dem Bildschirm erscheinen, so müssen Sie möglicherweise Sortiere die Checkboxen auch):

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 
Verwandte Themen