我对使用“标签”有疑问:
我有一个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)。
答案 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>