从列表中删除项目而不将其从数据源中删除 - c#

时间:2016-04-30 14:52:15

标签: c# listbox datasource

我正在尝试在拖放它后从列表框中删除一个项目,但是当我这样做时,我收到一条消息,说我无法修改列表框,因为它与数据源链接。

问题是我只想从listBox的视图中删除该项,同时将其保留在数据源中。

以下是我试图做的事情:

int indexSelec = listBox3.SelectedIndex;

listBox3.Items.Remove(listBox3.Items[indexSelec]);

有人有解决方案吗?

THX

2 个答案:

答案 0 :(得分:0)

您应该将列表框项目存储到列表<字符串> 然后使用该列表添加或删除列表框中的项目。这是一个例子:

首先添加一个新列表: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;

答案 1 :(得分:0)

您无法从ListBoxItem中删除ListBox,因为它是ReadOnlyCollection的一部分。

但您可以设置其Visibility

ListBoxItem c = (ListBoxItem) ListBox1.ItemContainerGenerator.ContainerFromItem(ListBox1.Items[0]);

c.Visibility = System.Windows.Visibility.Collapsed;