我有一个表格,我想用以下代码填写。目的是填写CheckBoxes,它们放在面板内,然后放在一些TabPages中。这段代码很好地抓住CheckBoxes的值,但由于某种原因它读取我的ArrayList错误。例如,如果ArrayList填充“1,1,0,0,0 ......”,它将每行读为“1”并相应地设置CheckBoxes。
我还尝试放置一个整数来查看它是否多次重复该过程(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 :(得分:0)
您正在遍历void vymazstudenta(STUDENT **head,const char *priezvisko)
{
if (*head == NULL)
{
// empty list
return;
}
if(!strcmp(*head->priezvisko,priezvisko))
{
// Special case:
// Remove the *head element
STUDENT *hladany = *head; // Save a pointer to current head
*head = *head->next; // Update head
free(hladany); // Free the previous head
return;
}
STUDENT *traverse = *head->next;
STUDENT *previous = *head;
while(traverse!=NULL)
{
if(!strcmp(traverse->priezvisko,priezvisko))
{
previous->next = traverse->next; // Update previous to point
// to element after traverse.
free(traverse); // Now free traverse
return;
}
previous = traverse; // Move previous to next element
traverse = traverse->next; // Move traverse to next element
}
fprintf(stderr,"Student %s sa nenasiel.\n",priezvisko);
return;
}
中每个值的所有复选框,并且由于您从未取消选中这些框,因此第一个tabel1
值将检查所有框,这就是它们将保留的方式。
我猜您要根据找到复选框的顺序使用1
中的相应值(我认为这不一定与它们在屏幕上显示的顺序相匹配,所以你也可能要对复选框进行排序):
tabel1