C# 单击即可打开下拉列表(在datagrid视图中)项
如何避免双击C# 单击即可打开下拉列表(在datagrid视图中)项,c#,winforms,datagridview,datagridviewcomboboxcell,C#,Winforms,Datagridview,Datagridviewcomboboxcell,如何避免双击DataGridView中使用的下拉按钮?现在,我可以通过单击两次或多次来查看DataGridView中的下拉项。第一次选择单元格,第二次单击下拉按钮箭头时,显示列表。如何在一次单击中实现相同的功能?您可以通过订阅网格的编辑控件Showing事件并在其中订阅类型为组合框的控件来实现此功能 ComboBox ctl = e.Control as ComboBox; ctl.Enter -= new EventHandler(ctl_Enter); ctl.Enter += new Ev
DataGridView中使用的下拉按钮
?现在,我可以通过单击两次或多次来查看DataGridView
中的下拉项。第一次选择单元格,第二次单击下拉按钮
箭头时,显示列表。如何在一次单击中实现相同的功能?您可以通过订阅网格的编辑控件Showing
事件并在其中订阅类型为组合框的控件来实现此功能
ComboBox ctl = e.Control as ComboBox;
ctl.Enter -= new EventHandler(ctl_Enter);
ctl.Enter += new EventHandler(ctl_Enter);
在Enter事件中,使用属性
void ctl_Enter(object sender, EventArgs e)
{
(sender as ComboBox).DroppedDown = true;
}
DroppedDown指示是否显示下拉区域,因此无论何时输入控件,都会将其设置为true并显示项目,而无需进一步单击。将DataGridView
的属性设置为Editonner
:
DataGridView.EditMode
-获取或设置一个值,该值指示如何开始编辑单元格
editonener
-当单元格接收到焦点时,编辑开始 “将DataGridView的EditMode属性设置为Editonner”对我来说很有效,但我发现了另一个问题:用户不能通过选择并按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}");
}
}
现在,组合框下降得更快,用户仍然可以通过选择一行并按DEL键来删除一行
就这样。你能详细说明一下你想要什么吗achieve@V4Vendetta,我已经更新了描述。请检查。您可能想检查我需要在单击datagrid单元格本身时显示dropitems。这没有什么区别。你能设置DataGridView EditMode=DataGridViewEditMode.Editonner
吗?我只设置了EditMode=Editonner属性,现在可以了。谢谢。在这个对话框中,当你点击DataGridView的灰色区域时,代码会打开下拉列表。这是我不想要的行为,所以我使用了这个(使用CellEnterEvent触发下拉列表):这不是此问题的有效答案,因为DataGridViewComboxCell控件没有Enter事件。我经历了一个有趣的行为-第一次单击会展开dropbox,选择第一项,并立即关闭dropbox。我需要再次单击才能真正进行选择。