代码之家  ›  专栏  ›  技术社区  ›  Peter Mortensen icecrime

.NET:列表视图蓝调?

  •  4
  • Peter Mortensen icecrime  · 技术社区  · 16 年前

    选择计数, .SelectedItems.Count ,当 这个 Selected 中的项的属性设置为true。 Items 收藏 ListView .

    例子:

      lvPept.SelectedItems.Clear()
      lvPept.Items(6).Selected = True
      Dim newLen As Integer = lvPept.SelectedItems.Count
    

    lvPept 是一个 列表视图 包含10个元素。

    newLen 应为1,但出现问题时为0 以及 SelectedIndexChanged 事件是 解雇.用 其他数据集如预期为1, 已触发SelectedIndexChanged事件。

    在什么情况下或在什么状态下可以 左心室舒张末期压 在 为了这件事? BeginUpdate () EndUpdate ()是 用于 左心室舒张末期压 .

    背景:

    我想找出一个问题我的一个用户 开源.NET应用程序,msquant ( http://msquant.sourceforge.net/ ),遇到。

    我不知道是什么原因 问题。

    这个问题是可复制的,我可以在 开发环境,visual studio 2008。好像是 独立于Windows版本(Windows 2000/Windows XP 32位/ Windows XP 64位)、.NET运行时版本(2.0/3.5)和Visual 工作室版本(2005/2008)。

    其他上下文:应用程序是用vb.net编写的 是一个windows窗体应用程序。的源代码 有问题的班级在 http://shrinkster.com/14bg . 这个 形成了 列表视图 是在最初生成的 最早的visual studio官方版本之一 支持.NET,约2002年。

    更新1:因为我有一个工作案例和一个坏案例 比较了 左心室舒张末期压 . 唯一的区别 除了属性“handle”、“mouseposition”和“topitem” (因为它是具有不同肽的不同蛋白质)是 “创造”。破箱子是假的。有道理 部分构造的对象不能正常工作, 但怎么可能呢?

    更新2:属性“created”为false结果是 良好的领导能力。我想真正的问题是 建设 时间不在 形式荷载 时间。我现在 添加了属性“created”、重构和更改的断言 在窗体加载时发生的所有操作。现在工作 正如预期的那样,有问题的用户得到了一个新的 应用程序的版本。

    从申请到现在 成立于2002年。我只是想知道一些专家能否 解释为什么99.9%的时间都是这样 在一些情况下失败了,而且可以复制。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Brandon    16 年前

    真有趣。

    我认为唯一能做到这一点的是,如果listview没有意识到listitem已经更改了它的“selected”值,因此没有更新它的selected item集合。

    .selecteditems属性不一定在每次获取该属性时都会生成-如果反映的是system.windows.forms程序集:

        if (this.selectedListViewItemCollection == null)
        {
            this.selectedListViewItemCollection = new SelectedListViewItemCollection(this);
        }
        return this.selectedListViewItemCollection;
    

    所以我倾向于认为你得到的是过时的selectedlistviewitemcollection。

    我将尝试在项目级别更改所选属性,而不是将所选索引添加到ListView的.SelectedInDices属性,并查看是否有效。这样,listview就不依赖于获取listviewitem更改。

        2
  •  0
  •   scottm    16 年前

    我相信您还必须调用listView.select()才能触发selectedIndexChanged事件。

    lvPept.SelectedItems.Clear()
    lvPept.Items(6).Selected = True
    lvPept.Select()
    Dim newLen As Integer = lvPept.SelectedItems.Count