列表框用于不循环列表框的语句

时间:2011-09-02 20:00:35

标签: c# listbox

第四次尝试应用此修复后询问此问题。我的问题是我有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。有人可以帮助我按照上面的错误写出来吗?

2 个答案:

答案 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。