设置EditMode为EditProgrammatical后,DataGridViewComboBoxCell下拉框需多次点击才显示
解决DataGridView EditProgrammatical模式下ComboBox点击多次才显示选项的问题
我之前也碰到过这个一模一样的坑!当把DataGridView的EditMode设置为EditProgrammatical时,动态添加的DataGridViewComboBoxCell确实会出现要点击2-3次下拉箭头才弹出选项列表的情况,核心原因很明确:
在
EditProgrammatical模式下,DataGridView不会自动让单元格进入编辑状态,第一次点击下拉箭头其实只是触发单元格切换到编辑模式,后续的点击才会真正触发下拉列表展开。
解决方法:手动触发编辑并展开下拉列表
只需要在添加完ComboBox单元格后,手动让目标单元格进入编辑状态,并且直接展开下拉控件即可,修改后的代码如下:
private void suggestButton_Click(object sender, EventArgs e) { var dict = getSuggestDict(); var dataGridViewComboBoxCell = new DataGridViewComboBoxCell { DataSource = dict.Keys.ToList() }; dataGridView[selectedColumn, selectedRow] = dataGridViewComboBoxCell; // 关键修复步骤 // 1. 将当前单元格定位到刚添加的ComboBox单元格 dataGridView.CurrentCell = dataGridView[selectedColumn, selectedRow]; // 2. 强制单元格进入编辑状态 dataGridView.BeginEdit(true); // 3. 获取编辑控件并直接展开下拉列表 if (dataGridView.EditingControl is DataGridViewComboBoxEditingControl comboBox) { comboBox.DroppedDown = true; } }
代码说明
dataGridView.CurrentCell = ...:确保操作的是我们刚添加的ComboBox单元格,避免定位错误BeginEdit(true):参数true表示强制允许单元格进入编辑状态,绕过EditProgrammatical的自动编辑限制comboBox.DroppedDown = true:直接让下拉列表展开,用户不需要额外点击就能看到选项
这样修改后,点击按钮添加ComboBox单元格后,下拉列表会直接弹出,再也不需要多次点击箭头了。
内容的提问来源于stack exchange,提问作者Dannz
相关产品推荐
相关产品推荐

