如何使用C#中的字符串从数据集集中删除列表框中的项目

时间:2011-09-24 00:42:38

标签: c# listbox arraylist listboxitem

参考msdn link

如何使用字符串删除项目??? (我不想通过使用选定的索引将其删除)
我想要像

这样的东西
USStates.Remove("Alabama","AL");

3 个答案:

答案 0 :(得分:1)

您无法更改Items集合,但可以更改DataSource(List或ArrayList)。

首先覆盖GetHashCode()类型中的Equals()USState方法。

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"; 

答案 1 :(得分:0)

首先,不要使用ArrayList,使用List。然后你可以根据T的类型删除

    list.Remove("whatever"); 

答案 2 :(得分:0)

更新:我假设您添加了一个按钮,您可以单击该按钮以删除项目。

    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。