![](/img/trans.png)
[英]Items collection cannot be modified when the DataSource property is set in c#
[英]C# ListBox : Items collection cannot be modified when the DataSource property is set
我创建了以下函数来要求从数据库以及列表框中删除所选记录,这将在按钮Delete Record
上进行调用。
功能说明
void DeleteListBox2()
{
string connstring = String.Format("Server=localhost;Port=***;" +
"User Id=****;Password=****;Database=****;");
NpgsqlConnection conn = new NpgsqlConnection(connstring);
conn.Open();
for (int i = 0; i < listBox2.SelectedItems.Count; i++)
{
var itemname = listBox2.SelectedValue;
NpgsqlCommand cmd = new NpgsqlCommand("DELETE FROM Table WHERE Value = '" + itemname + "'", conn);
cmd.ExecuteNonQuery();
MessageBox.Show("Selected record deleted from database");
listBox2.Items.Remove(listBox2.SelectedItems[i]); //ERROR LINE
listBox2.Update();
}
conn.Close();
}
错误 :
设置DataSource属性后,将无法修改项目集合。
这将有助于提供其他详细信息,例如您正在使用的框架,WPF,Winforms等。
您的ListBox应将其数据源绑定到List对象。 然后,应该直接从列表中删除视图绑定的列表,然后通知UI发生更改,并且它将进行相应的更新,而不是直接从列表视图组件中删除。
这是将列表视图绑定到列表对象的很好的读物: 将列表框绑定到列表
快速的Google搜索将返回有关更改后如何更新UI的结果,这是winforms的一个: 如何刷新C#WinForms中ListBox的数据源
我建议您在删除数据库中的项目后再次阅读。 因为您可能希望最近具有从数据库到显示的映射。
之后,只需将DataSource
属性重新附加到新的记录集合即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.