【问题标题】:C#/Visual Studio 2008 assigning "TopItem" property in "ListView" does not workC#/Visual Studio 2008 在“ListView”中分配“TopItem”属性不起作用
【发布时间】:2017-12-04 17:57:51
【问题描述】:

我目前支持使用 Visual Studio 2008 的 C# 桌面应用程序(计划很快升级)。

我有一个包含 3000 多个项目的“列表视图”。由于项目数量众多,我创建了一个“TextBox”,以便用户开始输入并将匹配的“ListView”项目滚动到“ListView”的顶部。

我已经看到很多关于如何实现这一点的帖子,问题,据​​称满足此要求的问题并不能始终如一地工作。对于“ListView”,没有“Groups”和属性“ShowGroups”设置为“false”。我读到“ShowGroups”属性的“true”可能会导致问题。

我发现应该完成任务的代码如下。

private void txtSearchCompany_TextChanged(object sender, EventArgs e)
{            
  // Call FindItemWithText with the contents of the textbox.

   ListViewItem foundItem =
     lvCompany.FindItemWithText(txtSearchCompany.Text, true, 0, true);

   if (foundItem != null)
   {            
      lvCompany.TopItem = foundItem;
   }
 }

我已经单步执行了代码,但赋值语句只是偶尔起作用,这让我感到困惑。

例如在“TextBox”中输入“02”,这里是赋值语句的断点和执行赋值语句之前的值。

lvCompany.topItem {Text = "00000"}

foundItem {Text = "02057"}

Before assignment statement

现在是赋值语句之后的值。

lvCompany.topItem {Text = "01563"}

foundItem {Text = "02057"}

After assignment statement

为什么“lvCompany.TopItem”会被设置为“01563”????

这是在“TextBox”中输入“02”后的“ListView”。 “ListView”中的顶部项目中没有“02”。 “TopItem”是“01563”。

ListView display

【问题讨论】:

  • 02057 下是否有足够的行可以将 02057 放在可视列表视图的顶部?如果没有,02057 只有在它下面有足够的行来将列表视图填充到可见视图的底部时才会向上移动。
  • 是的,“02057”是总共 10,767 行中的第 311 行(比我最初想象的要多)。 “ListView”具有固定大小,最多显示 20 行。因此,我对为什么“02057”不滚动到顶部而“01563”滚动到顶部感到困惑。

标签: c# listview visual-studio-2008 properties


【解决方案1】:

假装你有一个有 4 行可见的列表视图。您使用 10 行信息(1 到 10)填充该列表视图。由于显示了 4 行,因此列表视图只能在顶部显示 1 到 7,因为当列表视图的总行数超过 4 行时,需要 7、8、9 和 10 来显示完整的列表视图。由于 8 无法移动到顶部,因此 TopItem 仍将包含列表视图顶部实际显示的内容,在这种情况下为 7。因此 7、8、9 和 10 都将显示 7 作为 TopItem,因为列表视图不能将行进一步向上移动。

如果列表视图未满或只有 4 个项目开始,情况也是如此。因此,采用相同的列表,让我们只用 4 个项目填充它。为此,TopItem 将始终返回 1,因为没有低于 4 的其他行向上移动。

【讨论】:

  • 是的,这是有道理的,但在我的情况下,有足够多的行允许“TopItem”被分配“02057”行并将该行移动到“ListView”的顶部。 “ListView”最多显示 20 行并且不能调整大小。 “02057”行是 10,767 行中的第 311 行。请看我之前的评论。谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 2014-11-03
  • 1970-01-01
  • 2015-03-27
相关资源
最近更新 更多