DataGridViewComboBoxColumn - 必须单击单元格两次才能显示组合框

DataGridViewComboBoxColumn - Have to click cell twice to display combo box

我正在使用 DataGridView,它是使用设计器创建的,其中包含几列,其中包括 DataGridViewComboBoxColumn 列。

有点烦人的是我必须在每个单元格上单击两次甚至三次才能显示下拉列表:

  1. 如果我点击文本部分,需要 3 次点击!

  1. 如果我点击向下箭头,只需点击两次:

我假设这是由于单元格使用第一次点击获得焦点,但有没有办法解决这个问题,所以点击一个单元格会立即显示组合框?我注意到使用 DataGridViewCheckBoxColumn 不会 发生同样的问题...单击复选框会立即切换它,无论该单元格是否具有焦点。

您只需将 DataGridViewEditMode 属性 设置为 EditOnEnter

它使编辑更容易。几乎是单击一次,但如果您希望在单击组合框的内容时立即显示 ComboBoxColumn 的下拉列表,您可以处理 CellClick event and then use EditingControl of your grid and cast it to DataGridViewComboBoxEditingControl 并使其显示下拉列表。

private void categoryDataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
{
    //You can check for e.ColumnIndex to limit this to your specific column
    var editingControl = this.categoryDataGridView.EditingControl as 
        DataGridViewComboBoxEditingControl;
    if (editingControl != null)
        editingControl.DroppedDown = true;
}

使用此技巧时请小心,当用户只想在单元格之间导航而不进行编辑时,您可能会使下拉菜单变得烦人。