WinForms DataGridViewComboBoxColumn的有效自动完成

WinForms DataGridViewComboBoxColumn的有效自动完成,winforms,controls,Winforms,Controls,我已经构建了许多WinForms应用程序,它们使用带有组合框列的DataGridView网格。这些控件的用户交互中似乎存在一个基本缺陷。通常情况下,我的受众是由需要执行键盘驱动布局的业务用户组成,他们希望在遇到下拉控件时自动完成选择 我看到了此控件类型的两个基本问题: 当控件以tabstop的形式获得焦点时,它不会立即进入自动完成模式,用户必须进行小提琴演奏,通常是敲击空格或几下按键 有时控件似乎具有自动完成的选择,但当点击选项卡时,选择将被清除。这肯定是一个问题,因为网格中的一行中有两个控件

我已经构建了许多WinForms应用程序,它们使用带有组合框列的DataGridView网格。这些控件的用户交互中似乎存在一个基本缺陷。通常情况下,我的受众是由需要执行键盘驱动布局的业务用户组成,他们希望在遇到下拉控件时自动完成选择

我看到了此控件类型的两个基本问题:

  • 当控件以tabstop的形式获得焦点时,它不会立即进入自动完成模式,用户必须进行小提琴演奏,通常是敲击空格或几下按键
  • 有时控件似乎具有自动完成的选择,但当点击选项卡时,选择将被清除。这肯定是一个问题,因为网格中的一行中有两个控件
  • 我知道一个解决方案是使用不同的控制库。不久之后,我希望能够使用WPF进行实时项目,但在未来的几年中,WinForm仍将进行维护。我已经尝试了很多对自动完成和下拉式设置的调整,但是我从来没有提出过一个真正适用于基于poweruser级别键盘的数据输入的配置


    有什么建议吗

    对于第一个问题,您是否将DataGridView.EditMode设置为DataGridViewEditMode.Editonner


    至于第二个,如果ComboBox列的开箱即用编辑控件没有达到您想要的效果,您可以使用IDataGridViewEditingControl界面进行自己的滚动。

    不知道我怎么会错过它!看起来EditMode中的更改也解决了第二个问题,但还有一个未解决的问题:如果组合在第一列中,并且焦点以编程方式设置为网格,则不会触发编辑模式。这是一个新问题,似乎受到EditMode更改的影响。谢谢你的帮助!尝试在编程焦点之后显式调用DataGridView.BeginEdit。