【问题标题】:ListView unable to check a checkboxListView 无法选中复选框
【发布时间】:2009-06-29 22:19:01
【问题描述】:

这是一个奇怪的问题,我没有添加太多代码,因为我不知道要开始。我在虚拟模式下有一个 listview 控件,如果我过滤 listview 以显示所有名为 John 的人,然后我会看到 3 个名为 John 的用户,然后我取消过滤器将所有值设置为 null 并将所有数据返回到 listview,我现在列表中有数百个项目,但除非我向下滚动列表视图,否则我只能在屏幕上看到 30 个。

然后我使用下面的代码检查每一行中的一个复选框,除了 3 个 Johns 之外,所有这些都被选中,但是如果我可以在 listview 中看到 3 个 Johns 中的 1 个而不滚动,然后运行可见 John 下方的代码被选中.

 for (int i = 0; i < this._items.Count; i++)
            {

                    this._items[i].Checked = true;
            }

在上面的代码中检查复选框之前,我已经检查了复选框的状态,如果 John 可见,则复选框认为它未选中 (false),如果它不可见,则认为它已选中 (true)。因此,在屏幕上有一个可见的约翰,复选框看起来没有选中,运行测试证明它没有选中,对于两个约翰,我看不到他们相信他们被选中,但如果我向下滚动以便我可以看到他们不是。

有什么想法吗?

【问题讨论】:

  • 您在什么情况下填充 this._items 集合?

标签: c# listview


【解决方案1】:

开箱即用,.NET ListViews (WinForms)在虚拟模式不支持复选框。它们工作不可靠并产生奇怪的错误。我从来没有见过你描述的那个,但这并不让我感到惊讶。

您的解决方案是:

  1. 使用非虚拟 ListView
  2. 使用ObjectListView,它支持虚拟列表上的复选框

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题,但我不在虚拟模式下。我已经在调试模式下运行了程序,虽然指令:

    listView1.Items[count].Checked = true;

    被执行('count' 是一个功能计数器),我的列表视图中的复选框将不会被选中。有时,其中一两个会无缘无故地出现,尽管所有要检查的复选框都已读取该行...

    我会对任何亮点都非常感兴趣!

    谢谢你, 克里斯托夫

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-20
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多