第四次尝试应用此修复后询问此问题。我的问题是我有2个列表框,一个包含ID,另一个包含Cell ID。 ID列表框有10个项目(用于测试),Cell框有5个ID。我正在尝试处理listId和listCell,同时创建更新链接...
示例 MakeReq 将创建 txtWebUpdate.Text listID listCell& ire = 1 ,其中
store.domain.com/101/sec01&ire=1
store.domain.com/102/sec02&ire=1
store.domain.com/103/sec03&ire=1
store.domain.com/104/sec04&ire=1
store.domain.com/105/sec05&ire=1
store.domain.com/106/sec01&ire=1 <- notice how listCell starts over it
continues to loop applying sections until the ListID is complete.
这是我一直在使用的代码。我的代码发生了什么,它只是选择第一项。它完成后不会进入下一个项目。
if (listId.Items.Count != 0 && listCell.Items.Count != 0)
{
for (int a = 0; a < listId.Items.Count; a++)
{
for (int b = 0; b < listCell.Items.Count; b++)
{
lblID.Text = listId.Items[a].ToString();
MakeReq(txtWebUpdate.Text + listId.Items[a].ToString() +
"&ire=1", listCell.Items[b].ToString());
//System.Threading.Thread.Sleep(5);
}
}
}
如果您能提供帮助,请发表评论。我几乎肯定问题是for语句以及它如何选择列表项,但我可能错了。
编辑更多信息:在测试了@duffp的示例/建议之后,问题肯定是我的For语句。正在发生的事情是它计算我在ListCell中有5个条目,然后输出一个(相同)ListID 5次但具有不同的ListCell。有人可以帮助我按照上面的错误写出来吗?
答案 0 :(得分:0)
在MakeReq方法调用中可能有一些事情要做。我刚刚尝试了以下代码:
private void Form1_Load(object sender, EventArgs e)
{
if (listId.Items.Count != 0 && listCell.Items.Count != 0)
{
for (int a = 0; a < listId.Items.Count; a++)
{
for (int b = 0; b < listCell.Items.Count; b++)
{
lblID.Text = listId.Items[a].ToString();
MakeReq(listId.Items[a].ToString(), listCell.Items[b].ToString());
}
}
}
}
public void MakeReq(string listId, string cellId)
{
Console.WriteLine("store.domain.com/" + listId + "sec01&ire=" + cellId);
}
它给出了输出:
store.domain.com/ID_10sec01&ire=Cell_1
store.domain.com/ID_10sec01&ire=Cell_2
store.domain.com/ID_10sec01&ire=Cell_3
store.domain.com/ID_10sec01&ire=Cell_4
store.domain.com/ID_10sec01&ire=Cell_5
store.domain.com/ID_10sec01&ire=Cell_6
store.domain.com/ID_10sec01&ire=Cell_7
store.domain.com/ID_10sec01&ire=Cell_8
store.domain.com/ID_10sec01&ire=Cell_9
store.domain.com/ID_10sec01&ire=Cell_10
这不是你想要的吗?
答案 1 :(得分:0)
我认为MakeReq中可能存在一些您没有向我们展示的副作用。如何在代码中添加一些调试语句,如下所示:
if (listId.Items.Count != 0 && listCell.Items.Count != 0)
{
for (int a = 0; a < listId.Items.Count; a++)
{
int listCellCount = listCell.Items.Count;
for (int b = 0; b < listCell.Items.Count; b++)
{
lblID.Text = listId.Items[a].ToString();
MakeReq(txtWebUpdate.Text + listId.Items[a].ToString() +
"&ire=1", listCell.Items[b].ToString());
//System.Threading.Thread.Sleep(5);
Debug.Assert(listCellCount == listCell.Items.Count);
}
}
}
断言(listCellCount == listCell.Items.Count)应始终为true,除非正在更改listCell.Items。