我正在尝试根据选中列表框中的选定标签过滤文档——它填充了我的标签类的对象——但无法访问这些项目以进行搜索。我尝试了几种变体,但我现在使用的方法是:
private void chlbTags_ItemCheck(object sender, ItemCheckEventArgs e)
{
List<Tag> chosenTags = new List<Tag>();
foreach (object item in chlbTags.CheckedItems)
{
chosenTags.Add((Tag)item);
}
fillDocs(tags: chosenTags);
}
我知道这可能很简单,但我在搜索时似乎发现的一切似乎都与取回字符串有关。
编辑:无论检查多少标签,selectedTags始终为空。
编辑2:感谢@Jony 该死的......这已经部分排序了。但是现在我不能检查多个标签而不抛出 InvalidCastException。
编辑 3:如何填充选中的列表框。
public static List<Tag> fillUsed(List<int> docIds = null)
{
List<Tag> used;
if (docIds == null)
{
used = (from t in frmFocus._context.Tags
where t.AllocateDocumentTags.Count > 0
select t).ToList();
}
else
{
used = (from id in docIds
join adt in frmFocus._context.AllocateDocumentTags on
id equals adt.documentId
join t in _tags on adt.tagId equals t.id
select t).ToList();
}
return used;
}
任何帮助表示赞赏,谢谢。
这部分有效
public void fillDocs(List<Tag> tags = null)
{
lvDownload.Items.Clear();
if (tags != null)
{
docs = docManagement.fillUp(tags: tags);
}
else
{
docs = docManagement.fillUp();
}
}