【译文】雷蒙德-陈:经典 Win32 ListView 如何处理增量搜索?

经典的 Win32 ListView 支持增量搜索:您可以开始键入一个项目的名称来搜索它。但要比这复杂一些。

要知道,人们期望的键入到搜索的工作方式不止一种。在一种模式中,你输入想要的东西的第一个字母,系统就会找到以该字母开头的第一个项目。如果这不是你想要的,你再按一次相同的字母,系统就会找到以该字母开头的第二个项目。继续按同一个字母,直到找到你想要的项目。这就是 Windows 1.0 中列表框搜索的工作方式。

另一种模式是键入所需内容的第一个字母,系统就会找到以该字母开头的第一个项目。如果这不是你想要的,那么键入你想要的东西的第二个字母,系统就会找到前两个字母与你键入的字母相匹配的第一个项目。不断输入更多字母,直到找到你想要的项目。

经典的 Win32 ListView 控件应使用哪种模式?

为什么不能两者兼有?

如果您反复键入相同的字母,那么经典 Win32 ListView 会认为您使用的是第一种模式,而且每次您再次按下相同的字母时,它都会选择以该字母开头的下一个项目。但是,如果您键入的是不同的字母,那么经典的 Win32 ListView 会认为您键入的是前缀,并选择以该前缀开头的第一个项目。

例如,假设您有一个包含以下项目的 ListView:

  • Cougar
  • Leopard
  • Lemur
  • Lion
  • Llama
  • Tiger

输入 “L”,就会选择列表中第一个以 “L “开头的动物 “Leopard“。

由于现在是两个 L,Win32 ListView 处于 “重复字母 “模式,它选择了第二个 L 动物,即Lemur

现在输入 A。这不再是同一个字母的重复,因此 Win32 ListView 切换到 “前缀 “模式,并选择第一个以 “LLA “开头的项目,即 Llama。

本文文字及图片出自 How does the classic Win32 ListView handle incremental searching?

余下全文(1/3)
分享这篇文章:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注