2012-08-11 59 views
0

我的组合框的工作,我是刷新组合框的值,首先我正在删除所有的值,然后重新填充它。但它不起作用。代码复制组合框中正在创建问题的值。这是我的代码。组合框更新在C#

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(); 

请帮助我解决这个问题。

+0

你确定查询不返回重复条目吗?使用updateCombo.Items.Clear一次 – 2012-08-11 10:35:02

+0

到德克勒所有项目如果有10个项目,并已删除了其中五个,剩下留给5个项目,会发生什么,当你要求删除他们的第六届? – GSerg 2012-08-11 10:35:49

+1

组合框清除没有错误,每件事都可以。查询只是按升序进行选择。我仍然得到重复项目。 – greatmajestics 2012-08-11 11:28:42

回答

3

不知道为什么会happen-但如果Items.Count回来为0,那么你的循环将不会从项目列表中删除任何现有的内容,你会得到重复。

你试过只是清除列表中的所有内容,无论使用:

updateCombo.Items.Clear(); 

这样可以节省你不必通过所有这些迭代,通过一个消除他们一个反正。

+0

它的工作..我不知道什么原始代码背后的清除功能... dOES任何机构知道?仍然是正确的答案。感谢名单。 – greatmajestics 2012-08-11 11:31:12

1

你的for循环删除项为0,接着在1,则在2,依此类推。 但是,删除0处的项目时,列表中的该位置不会保持为空 - 其他项目会有效地向下移动一个。

所以,如果你改变了你的清算代码:

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

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

+0

伟大的答案,它就像在Java中的表值删除。 Thanx Jon。现在我清楚了。 – greatmajestics 2012-08-11 11:44:57