单击即可打开下拉列表(在数据网格视图中)

New*_*Bie 20 c# datagridview winforms datagridviewcomboboxcell

我怎样才能避免双击一个DropDownButton用过的DataGridView?现在,我可以DataGridView通过单击两次或更多次来查看其中的下拉项.第一次选择单元格,第二次单击DropDownButton箭头时,它显示列表.如何通过一次点击实现同样的目标?

alg*_*eat 18

设置to :链接的EditMode属性DataGridViewEditOnEnter

DataGridView.EditMode - 获取或设置一个值,指示如何开始编辑单元格.

EditOnEnter - 当单元格获得焦点时开始编辑.


V4V*_*tta 15

您可以通过订阅EditingControlShowing网格事件并在那里控制类型来实现此目的ComboBox

ComboBox ctl = e.Control as ComboBox;
ctl.Enter -= new EventHandler(ctl_Enter);
ctl.Enter += new EventHandler(ctl_Enter);
Run Code Online (Sandbox Code Playgroud)

在Enter事件中,使用该属性

void ctl_Enter(object sender, EventArgs e)
{
    (sender as ComboBox).DroppedDown = true;
}
Run Code Online (Sandbox Code Playgroud)

DroppedDown表示名称是否显示下拉区域,因此无论何时输入控件,都会将其设置为true并显示项目而无需进一步点击.

  • 你能设置DataGridView EditMode =`DataGridViewEditMode.EditOnEnter` (12认同)

小智 6

"将DataGridView的EditMode属性设置为EditOnEnter"对我有用,但我发现了另一个问题:用户只能通过选择并按DEL键来删除行.所以,谷歌搜索给了我另一种方法来做到这一点.只需捕获事件CellEnter并检查单元格是否是适当的类型,以执行适当的操作,如下面的示例代码:

private void Form_OnLoad(object sender, EventArgs e){
    dgvArmazem.CellEnter += new DataGridViewCellEventHandler(dgvArmazem_CellEnter);
}

void dgvArmazem_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView dg = (DataGridView)sender;

            if (dg.CurrentCell.EditType == typeof(DataGridViewComboBoxEditingControl))
            {
                SendKeys.Send("{F4}");
            }
        }
Run Code Online (Sandbox Code Playgroud)

现在ComboBox下降得更快,用户仍然通过选择一行并按DEL键删除一行.

而已.