删除列表项

时间:2014-08-29 01:32:28

标签: c# winforms listbox

我这里有一个班级和我的购买者名单:

public class Purchaser
{
     public string Name { get; set; }
     public bool Paid { get; set; }
}

List<Purchaser> Purchasers = new List<Purchaser>();

我还有一个代码,可以通过从一个文本框中删除文本并将其添加到购买者列表和我的列表框 listDOF 来添加新购买者:

if(box_AddPerson.TextLength != 0)
{
    Purchaser purchaser = new Purchaser();
    purchaser.Name = caixa_AddJog.Text;
    purchaser.Paid = true;
    listDOF.Items.Add(purchaser.Name);
    Purchasers.Add(purchaser);
 }

此代码运作良好,购买者已添加到购买者列表中,也添加到我的列表框中 现在我需要的是能够通过列表框删除一个购买者。我在一个按钮的点击事件中尝试了这个:

if(listDOF.SelectedItems.Count != 0)
{
    Purchaser purchaser = new Purchaser();
    Purchasers.Remove(purchaser);
    listDOF.Items.Remove(listDOF.SelectedItem);
}

这适用于从列表框中删除选定的购买者。但是如何将他从买方名单中删除? 提前谢谢!

3 个答案:

答案 0 :(得分:1)

尝试使用Data bound items

ListBox
BindingSource bs = new BindingSource();
Purchasers.Add(new Purchaser { Name = "test", Paid = true });
Purchasers.Add(new Purchaser { Name = "test1", Paid = true });
Purchasers.Add(new Purchaser { Name = "test2", Paid = true });
bs.DataSource = Purchasers;
listBox1.DataSource = bs;
listBox1.DisplayMember = "Name";

然后这个如何删除。

private void button1_Click(object sender, EventArgs e)
{
    bs.RemoveAt(listBox1.SelectedIndex);
}

答案 1 :(得分:0)

我不确定你在做什么。您创建了一个新的purchaser并将其删除了吗?!

您要做的是找到要删除的项目(所选项目),然后从要删除的项目中删除该项目。

事情:

var item_to_remove = // selected index
listDOF.Items.Remove(item_to_remove);

答案 2 :(得分:0)

您可以使用它删除该项目:

  if ( listDOF.SelectedItems.Count != 0 )
  {
    Purchasers.RemoveAll( x => x.Name.Equals( listDOF.SelectedItem ) );
    listDOF.Items.Remove( listDOF.SelectedItem );
  }