按(列)名称而不是按硬编码索引获取相关的列表视图子项

本文关键字:获取 列表 视图 索引 编码 | 更新日期: 2023-09-27 18:34:15

我有一个ListViewItem扩展方法包装器,它通过索引(硬编码)获取相关的子项引用,我想知道是否有办法通过不硬编码索引号来获取它。

public class ListViewExtensionsLogic : IListViewExtensionsLogic
{
    public ListViewItem.ListViewSubItem GetUserIdSubitem(ListViewItem lvi)
    {
        return lvi.SubItems[1]; // I want to get it by not hard-coding it
    }
}
public static class ListViewExtensionMethods
{
        private static IListViewExtensionsLogic _listviewExtensionsLogic;
        static ListViewExtensionMethods()
        {
            var builder = new ContainerBuilder();
            builder.RegisterType<ListViewExtensionsLogic>().As<IListViewExtensionsLogic>();
            var container = builder.Build();
            container.BeginLifetimeScope();
            _listviewExtensionsLogic = container.Resolve<IListViewExtensionsLogic>();
        }
        public static ListViewItem.ListViewSubItem GetUserIdSubItem(this ListViewItem lvi)
        {
            return _listviewExtensionsLogic.GetUserIdSubitem(lvi);
        }
}

像这样使用:

        private void InitializeFollowers()
        {
            if (lvFollowList.Items.Count > 0)
            {
                foreach (ListViewItem lvi in lvFollowList.Items)
                {
                    if (!String.IsNullOrEmpty(lvi.GetUserIdSubItem().Text))
                    {
                        // Do something here
                    }
                }
            }
        }

按(列)名称而不是按硬编码索引获取相关的列表视图子项

为什么

不将索引和参数传递给方法,如下所示

public ListViewItem.ListViewSubItem GetUserIdSubitem(ListViewItem lvi, int index)
{
    return lvi.SubItems[index];
}