【问题标题】:Removing an item from a list without removing it from its datasource - c#从列表中删除项目而不将其从其数据源中删除 - c#
【发布时间】:2025-12-22 23:40:06
【问题描述】:
我试图在拖放后从列表框中删除一个项目,但是当我这样做时,我收到一条消息说我无法修改列表框,因为它与数据源链接。
问题是我只想从 listBox 的视图中删除该项目,同时将其保留在数据源中。
这是我尝试做的:
int indexSelec = listBox3.SelectedIndex;
listBox3.Items.Remove(listBox3.Items[indexSelec]);
有人有解决办法吗?
谢谢
【问题讨论】:
标签:
c#
listbox
datasource
【解决方案1】:
您应该将列表框项目存储到列表,然后使用该列表在列表框中添加或删除项目。这是一个例子:
首先添加一个新列表:List<string> _items = new List<string>();
现在将项目添加到列表并显示在列表框上:
_items.Add("One");
_items.Add("Two");
_items.Add("Three");
listBox1.DataSource = _items; //this will display added items to List Box
将项目添加到列表框:
_items.Add("New Item " + DateTime.Now.Second);
listBox1.DataSource = null;
listBox1.DataSource = _items;
从列表框中删除项目:
int selectedIndex = listBox1.SelectedIndex;
try
{
_items.RemoveAt(selectedIndex);
}
catch
{
}
listBox1.DataSource = null;
listBox1.DataSource = _items;
【解决方案2】:
您不能从ListBox 中删除ListBoxItem,因为它是ReadOnlyCollection 的一部分。
但是你可以设置它的Visibility。
ListBoxItem c = (ListBoxItem) ListBox1.ItemContainerGenerator.ContainerFromItem(ListBox1.Items[0]);
c.Visibility = System.Windows.Visibility.Collapsed;