如何在c#中使用字符串从具有数据源集的列表框中删除项
本文关键字:数据源 列表 删除 字符串 | 更新日期: 2023-09-27 18:09:27
指MSDN链接
如何删除一个项目使用字符串??(我不想通过使用selected index删除它)
比如
USStates.Remove("Alabama","AL");
你不能改变Items
集合,但你可以改变DataSource (List或ArrayList)。
首先覆盖USState
类型的GetHashCode()
和Equals()
方法。
public override int GetHashCode()
{
return myLongName.GetHashCode() + myShortName.GetHashCode();
}
public override bool Equals(object obj)
{
return GetHashCode() == obj.GetHashCode();
}
现在,你可以删除一个元素
listBox1.DataSource = null; // Set null so you can update DataSource
USStates.Remove(new USState("Wisconsin", "WI"));
listBox1.DataSource = USStates;
listBox1.DisplayMember = "LongName";
listBox1.ValueMember = "ShortName";
更新:我假设你添加了一个按钮,你可以点击它来删除一个项目。
BindingList<USState> USStates;
public Form1()
{
InitializeComponent();
USStates = new BindingList<USState>();
USStates.Add(new USState("Alabama", "AL"));
USStates.Add(new USState("Washington", "WA"));
USStates.Add(new USState("West Virginia", "WV"));
USStates.Add(new USState("Wisconsin", "WI"));
USStates.Add(new USState("Wyoming", "WY"));
listBox1.DataSource = USStates;
listBox1.DisplayMember = "LongName";
listBox1.ValueMember = "ShortName";
}
private void button1_Click(object sender, EventArgs e)
{
var removeStates = (from state in USStates
where state.ShortName == "AL"
select state).ToList();
removeStates.ForEach( state => USStates.Remove(state) );
}
PS:我以为你在我之前的回答中使用的是WPF
首先,不要使用ArrayList,使用List。然后你可以根据T的类型来删除
list.Remove("whatever");