0

我正在处理组合框,我正在刷新组合框值,首先我删除所有值,然后重新填充它。但它不起作用。该代码复制了组合框中的值,这会产生问题。这是我的代码。

    for (int i = 0; i < updateCombo.Items.Count; i++)
    updateCombo.Items.RemoveAt(i);

    //----------- Now Adding New Values --------
    updateCombo.Items.Add("Select an option . . .");

    SqlCommand command = new SqlCommand(Queries.qry9, connection);
    SqlDataReader reader = command.ExecuteReader();

请帮我解决这个问题。

4

2 回答 2

3

不知道为什么会发生这种情况 - 但如果 Items.Count 返回为 0,那么您的循环将不会从项目列表中删除任何现有内容,并且您将得到重复项。

您是否尝试过清除列表的所有内容,而不管使用:

updateCombo.Items.Clear(); 

它使您不必遍历它们,无论如何都要将它们一一删除。

于 2012-08-11T10:39:15.863 回答
1

您的 for 循环正在删除 0 处的项目,然后是 1 处,然后是 2 处,依此类推。但是,当 0 处的项目被删除时,列表中的该位置不会保持为空 - 其他项目实际上向下移动了一个。

因此,如果您将清算代码更改为:

for (int i = 0; i < updateCombo.Items.Count; i++)
updateCombo.Items.RemoveAt(0);

它应该工作。但是,正如其他人所建议的那样,使用updateCombo.Items.Clear();是一种更好的方法。

于 2012-08-11T11:39:49.717 回答