不能手动添加项目到列表框中,而列表框是在列表中迭代填充的。

问题描述 投票:0回答:1

在C# WinForms项目中,我正在查询一个数据库,以获得一个列表的值来填充一个列表框。查询会弹出一个列表,然后我通过该列表迭代将列表项添加到列表框中。

lsNewValuesList = dbGetNewValueInfo.GetNewValuesDgvData(strNewValuesQuery);

foreach (string strItem in lsNewValuesList)
{
    lsBxNewValues.Items.Add(strItem);
}

在这之后,我需要手动添加一个项目到列表的顶部,我是通过以下方式来完成的。lsBoxNewValues.Items.Insert(0, "DELETE");. 但当我运行它时,我得到的信息是:

当设置DataSource属性时,项目集合不能被修改。

下面是错误的截图(为了澄清一些问题)。enter image description here

研究了一下,我明白当列表框被数据源填充时,错误就会出现,但我只是从一个字符串列表中填充。那么,从技术上讲,这也是一个数据源吗?

我如何实现我想要做的事情?

[更新]

好吧,我做了一些调整,尽管没有解决我的问题,我尝试了以下的方法:在ListBox中插入 "DELETE"(这是我最初尝试的,并导致了错误),而不是在List的索引0处插入,即ListBox的数据源。

lsNewValuesList = dbGetNewValueInfo.GetNewValuesDgvData(strNewValuesQuery);

lsNewValuesList.Insert(0, "DELETE");
lsBxNewValues.DataSource = lsNewValuesList;
//foreach (string strItem in lsNewValuesList)
//{
//  lsBxNewValues.Items.Add(strItem);
//}

我没有在ListBox中插入 "DELETE"(这是我最初尝试的,也是导致错误的原因),而是把它插入到List的索引0,也就是ListBox的数据源,然后设置ListBox的数据源。"DELETE "在ListBox中显示出来了,但是它和其他的项目一起被按字母顺序排列了。我没有对列表或ListBox进行任何排序--我使用的是 ORDER BY 然而,在数据库查询中。CyberZeus建议我使用 Refresh() 但这没有任何效果。

c# winforms listbox datasource
1个回答
0
投票

是的,一个字符串列表是一个数据源,你必须将从数据库中获取的数据添加到ListBox的数据源中。你可能需要刷新ListBox。

© www.soinside.com 2019 - 2024. All rights reserved.