c# - 如何通过键入(Windows 资源管理器详细信息 View )跳转到 DataGridView 中的特定行

标签 c# winforms datagridview keypress

我有一个用 C# 编写的 .NET Winforms 应用程序,它带有一个 DataGridView,它是只读的并且填充了一定数量的行。例如,我希望具有类似于 Windows 资源管理器(和许多其他应用程序)的详细信息 View 的功能。

我希望 DataGridView 的行为使得当您开始键入时它具有焦点时,当前行选择将跳转到单元格 0(即行中的第一列)的(字符串)值开始的行与您输入的字符。

例如,如果我有一个包含 1 列和以下行的 DataGridView:

  • 鲍勃
  • 贾森
  • 约翰
  • 乐华
  • 山姆

如果 DataGridView 具有焦点并且我按下键盘上的“b”键,则所选行现在是“Bob”。如果我快速输入键“ja”,则所选行是 Jane。如果我快速输入字母“jas”,则所选行是 Jane。如果我按下“z”键,则不会选择任何内容(因为没有任何内容以 Z 开头)。

同样,如果 Jane 当前处于选中状态并且我一直输入字母“j”,每次我按下“j”键时,选择将循环到 Jason,然后是 John,然后返回到 Jane。

我一直在谷歌搜索(和“stackoverflowing”:-))一段时间,但找不到此类功能的任何示例。我脑子里有一个粗略的想法,通过某种短暂的计时器线程来执行此操作,收集 DataGridView 的 KeyPress 事件上的击键,并根据收集到的与 Cells[0].Value.StartsWith() 匹配的击键选择行条件类型。但似乎必须有一种我只是没有看到的更简单的方法。

如有任何想法,我们将不胜感激。谢谢!

最佳答案

我还没有在 DataGridView 上看到任何像这样的内置功能。我很确定你必须“自己动手”。

您是否正在寻找更简单的方法来对字符串进行“部分搜索”?

关于c# - 如何通过键入(Windows 资源管理器详细信息 View )跳转到 DataGridView 中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2217541/

相关文章:

c# - AngularJS $resource 在 Web Api 中搜索项目的工作示例

c# - 您可以将不同的 View 模型发送到 View 吗?

c# - 放宽数据表适配器的约束

c# - 如何清除所有 datagridview 行,包括第一行(我试过 Dgv.DataSource = null; Dgv.Rows.Clear();)

c# - gridview 中的 cellendedit 事件在另一个 gridview 中添加行?

c# - 没有找到合适的方法来覆盖 webapi

c# - 替换静态 AutoMapper API;替换 Profile 中的 Map 方法

c# - 运行 System.Diagnostics 进程时如何在线程之间传递对象

c# - 将 BeginInvoke 转换为异步/等待

.net - 将图像添加到 .net datagridview 的 header