【问题标题】:Get the relevant ListViewSubItem by (column) name and not by hardcoding index?通过(列)名称而不是通过硬编码索引获取相关的 ListViewSubItem?
【发布时间】:2016-02-11 14:10:04
【问题描述】:

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

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
                    }
                }
            }
        }

【问题讨论】:

    标签: c# winforms listview listviewitem


    【解决方案1】:

    为什么不将索引和参数传递给下面的方法

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

    【讨论】:

    • 我为什么要通过索引?这个扩展方法的全部目的是充当一个包装器,从我的代码中封装这个逻辑。此外,我将返回子项的方法分开的原因是,如果将来我通过设计模式更改顺序或从列表视图中添加/删除子项,我可以在扩展方法中轻松更改它。
    • 为什么会这样?因为这看起来很简单。不是吗?否则,您必须为您的类型创建一个索引器,您也可以在其中传递列名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 2021-01-17
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    相关资源
    最近更新 更多