C#delete tagged Object

时间:2017-09-06 06:23:56

标签: c# winforms tags

我对使用“标签”有疑问:

我有一个ListBox或ListView,其中我有我的对象的名称,我添加了一个“Tag”属性来查找其对应的对象:

foreach(Operation op_ass in ListOpAss1)
    {
        op_ass.getNom(Properties.Settings.Default.Langue);
        ListViewItem item = new ListViewItem(op_ass.Nom);
        item.Tag = op_ass;
        listBoxAss1.Items.Add(op_ass.Nom);
    }

现在我想要的是,当我在列表中选择一个项目(或几个)时,对相应的对象进行操作。但我怎么能找到他们呢? 例如,我想从列表中删除所选对象,或获取操作ID列表(不在列表中显示ID)。

2 个答案:

答案 0 :(得分:2)

看起来您要将属性op_ass.Nom添加到列表框而不是ListViewItem item。修改您的代码如下:

foreach (Operation op_ass in ListOpAss1)
   {
       op_ass.getNom(Properties.Settings.Default.Langue);
       ListViewItem item = new ListViewItem(op_ass.Nom);
       item.Tag = op_ass;

       // Add the list view item instead of op_ass.Nom
       listBoxAss1.Items.Add(item);
   }

现在您应该能够从所选项目/项目中检索标记,如下所示:

var operation = ((listBox1.SelectedItem as ListViewItem).Tag) as Operation;

或者,您可以考虑使用数据绑定,如下所示:

 foreach (Operation op_ass in ListOpAss1)
   {
      op_ass.getNom(Properties.Settings.Default.Langue);
   }

 listBoxAss1.DataSource = ListOpAss1;
 listBoxAss1.DisplayMember = "Nom";

并按如下方式访问数据绑定对象:

var operation = listBox1.SelectedItem as Operation;

答案 1 :(得分:-1)

使用foreach是一种不推荐使用的方法,你可以查看对象列表中已实现的函数

SchTasks

为了选择列表中的项目,您可以使用SingleOrDefalt()或Skip(count)获取(计数)多个文件,或者您可以运行具有条件的本机查询来搜索列表,如下所示

 <video id="video" #video width="100%" height="auto"   autoplay></video>