我有一个ListView控件(SfListView),我需要知道每个被选中的项目的索引。
在上面的图片中,这将是1,3,4。
CheckedItems
Collection没有索引。
DataSource
属性和数据一起有索引,但当然不包含检查状态。
我试过的另一件事是将它管理在 ItemChecked
事件这样的。
private void lstAppNamePTT_ItemChecked(object sender, Syncfusion.WinForms.ListView.Events.ItemCheckedEventArgs e)
{
if(e.NewState == CheckState.Checked) {
AppChecked.Add(e.ItemIndex);
} else
{
AppChecked.Remove(e.ItemIndex);
}
}
我没有办法在事件之外做这件事。
我想到了迭代 DataSource
并找到关键字段的值和检索索引,但这是正确的做法吗?
我把我从SyncFusion论坛上得到的答案放在这里。
它可以通过检查检查项目与View of中的项目来实现。SfListVIew
并获取其索引值。
ObservableCollection<int> selectedIndex = new ObservableCollection<int>();
foreach (var allItems in sfListView1.View.Items)
{
foreach (var checkedItem in sfListView1.CheckedItems)
{
if(allItems == checkedItem)
{
selectedIndex.Add(sfListView1.View.DisplayItems.IndexOf(allItems));
}
}
}