隐藏 ListViewItem 而不是删除它?

2024-02-20

不显示的常见方法ListViewItem就是将其删除。
我目前的项目,与可能性只是隐藏该项目。

有什么办法可以隐藏ListViewItem而不是删除它?

到目前为止我已经尝试过:

  1. Using OwnerDraw=true, the DrawItem事件没有提供任何有用的东西:
    Bounds是只读的并且正在改变属性Item是没用的。

  2. Inherit ListView并覆盖WndProc是我的下一次尝试
    但我找不到任何LVM_???消息 http://msdn.microsoft.com/en-us/library/windows/desktop/ff485961%28v=vs.85%29.aspx这有帮助。
    LVM_SETITEMPOSITION仅在以下情况下使用View是图标或小图标。


您可以维护一个内部列表,用于存储 ListViewItem 的子类并具有 Visible 字段的 Item。基本思想如下:

public class ListView2 : ListView {

    private List<Item2> list = new List<Item2>();

    public class Item2 : ListViewItem {
        public bool Visible = true;
        public Object Value = null;

        public override string ToString() {
            return (Value == null ? String.Empty : Value.ToString());
        }
    }

    public Item2 this[int i] {
        get {
            return list[i];
        }
    }

    public int Count {
        get {
            return list.Count;
        }
    }

    public void Add(Object o) {
        Item2 item = new Item2 { Value = o, Text = (o == null ? string.Empty : o.ToString()) };
        Items.Add(item);
        list.Add(item);
    }

    public void RefreshVisibleItems() {
        var top = (Item2) this.TopItem;
        Items.Clear();
        int k = 0;
        foreach (var o in list) {
            if (o == top)
                break;
            if (o.Visible)
                k++;
        }
        Items.AddRange(list.FindAll(i => i.Visible).ToArray());
        if (k < Items.Count)
            this.TopItem = Items[k];
    }
}


    var lv = new ListView2();
    lv.View = View.Details;
    lv.Columns.Add("Column1", 100, HorizontalAlignment.Center);

    Button btn = new Button { Text = "Hide" , Dock = DockStyle.Bottom };
    lv.Dock = DockStyle.Fill;
    for (char c = 'A'; c <= 'Z'; c++)
        lv.Add(c);

    var f1 = new Form1();
    f1.Controls.Add(lv);
    f1.Controls.Add(btn);

    btn.Click += delegate {
        if (lv.Items.Count == 0) {
            for (int i = 0; i < lv.Count; i++)
                lv[i].Visible = true;
        }
        else {
            lv[lv.Items.Count - 1].Visible = false;
        }
        lv.RefreshVisibleItems();
    };


    Application.Run(f1);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐藏 ListViewItem 而不是删除它? 的相关文章

随机推荐

  • MPI_Bsend 的缺点?

    我最近遇到了一个死锁 我可以通过使用来解决MPI Bsend代替MPI Send 如果我理解正确的话 MPI Bsend 是一个非阻塞发送 并且可以安全地修改我发送的内容 而不必担心发送操作何时完成 所以 double x 1 MPI Bs
  • 在关闭之前的 AlertViewController 后呈现新的 AlertViewController - Swift

    我试图在用户选择第一个 AlertViewController 中的操作后呈现新警报 请在下面找到我的代码 IBAction func forgotPassword sender AnyObject 1 Create the alert c
  • Firestore 规则(判断真假)

    在 firestore 中你可以有如下规则 service cloud firestore match databases database documents match products document allow read writ
  • 在 C# 中将一组成员标记为私有/公共

    在 C 类声明中 您可以将一组成员标记为私有或公共 例如 private int x double y 好像c 中没有办法做到这一点 我错了吗 不 您不能在 C 中执行此操作 最好的情况下 你可以对成员使用默认的可见性 即私有的 而不是使用
  • 为什么以及何时需要多个构建代理?

    考虑 TFS 2010 的构建控制器拥有 1 个以上构建代理的能力 由于构建对于团队 环境来说是一个主观主题 因此请考虑在提交 签入时执行构建的环境 每个项目集合将包含 10 多个团队项目 但一天内可能只致力于其中 1 或 2 个 TFS
  • 改造覆盖端点

    我可以覆盖设置的端点路径吗RestAdapter建造者 假设我有 20 个端点使用相同的基本 URL 但有 1 个端点不使用相同的基本 URL 我想调用 setEndpoint 供所有 20 个使用 但在我需要使用不同基本 URL 的一种情
  • 在有源的情况下使用 HTML 脚本标签进行编码

    我注意到标签不允许您在其中使用 JavaScript 例如 这不起作用 也不会在 FireBug 中抛出错误 为什么会发生这种情况 为什么我们必须添加额外的
  • 使 qhull/qvoronoi 将 Voronoi 限制为凸包或给定多边形

    平面 Voronoi 曲面细分将始终具有无界多边形 无限区域 我如何告诉 qhull voronoi 将曲面细分与其中之一相交 原始点的凸包 或者带有我明确的多边形 指定 可能是一个矩形 具体例子 https github com barr
  • 如何在日期之间设置范围并且仅显示某些特定行

    下面的代码工作正常 请注意 我有一个名为f3然后我就这么做了Output生成从以下位置获得的所有数据f3 一切都好 但现在我的想法是在日期之间设定一个范围 并且只指定一些特定的行Output appear Example 我想看看Time获
  • 解析从请求发布中收到的多部分/表单数据

    我正在使用请求库编写 Web 服务客户端 我正在获取包含文件和文本 json 的 multipart form data 中的数据 我不知道如何解析它 是否有一个合适的库来解析 python 中的多部分 表单数据格式 或者我应该自己编写解析
  • 在 Dockerfile 中使用“pyenv activate”

    我正在尝试在 Dockerfile 中安装和设置 pyenv FROM nvidia cuda 8 0 cudnn5 devel ubuntu16 04 这是 Dockerfile 的后半部分 前半部分只是安装依赖项 RUN useradd
  • iOS开发中如何彻底去除bundle id?

    如何重复使用为应用程序 ID 创建的捆绑包 ID 我什至删除了关联的应用程序ID 但捆绑包ID仍然不可用 是否说捆绑包ID一旦创建就无法完全删除 捆绑包 ID 无法准确地重复使用 例如com abc xxx只能使用一次 如果您从一个帐户创建
  • 如何在 Admin Silverstripe 中添加自定义按钮及其功能?

    如何在 Admin Silverstripe 中添加自定义按钮及其功能 请告诉我解决方案 Custom Button add only in one menu 就像评论中提到的 wmk一样 您可以直接获取框架代码GridFieldPrint
  • Maven - maven-war-plugin 更改目标目录(webapp 除外)

    我正在使用 springboot 但我不希望它在 maven war plugin 任务期间复制我的 webapp 文件夹 因为它包含很多文件 例如 Bower components 文件夹 我正在使用 grunt 所以我在我的 war 中
  • Android 版 Googlemaps v2 中 getInfoWindow() 和 getInfoContents() 之间的区别

    两个问题 有什么区别public abstract View getInfoWindow Marker marker and public abstract View getInfoContents Marker marker getInf
  • TensorFlow embedding_attention_seq2seq 方法默认实现双向 RNN 编码器吗?

    我已将 embedding attention seq2seq 模块用于机器翻译任务 如以下指定的教程中所述 https www tensorflow org versions master tutorials seq2seq index
  • 牛顿多项式的规范系数

    不久前 我为我编写的游戏实现了多项式逼近 我正在使用牛顿金字塔法 我花了很长时间才弄清楚 但我的解决方案需要计算二项式系数 并且我还必须将所有系数相加以获得每个幂的最终系数 因为解决这个问题类似于平方 立方 项并计算二项式系数 例如 从 n
  • 使用 WinSCP .NET 程序集时,...\WinSCP.exe 的版本与该程序集的版本不匹配

    我正在使用一个名为WinSCPnet dll 该代码仅在我设置时才有效AssemblyFileVersion与相同的版本WinSCP exe它安装在哪里 我得到了这个异常 C Program Files x86l WinSCP WinSCP
  • 从 URL 打开 XmlDocument

    我正在使用 XmlDocument 打开远程 XML 文档 string apiURL Settings Settings URLBaseAPI user php apiURL apiURL u Settings Settings Foru
  • 隐藏 ListViewItem 而不是删除它?

    不显示的常见方法ListViewItem就是将其删除 我目前的项目 与可能性只是隐藏该项目 有什么办法可以隐藏ListViewItem而不是删除它 到目前为止我已经尝试过 Using OwnerDraw true the DrawItem事