c# - 我如何让 DataGridView 组合框一键显示下拉列表?

标签 c# .net winforms datagridview datagridviewcomboboxcell

在我将“EditOnEnter”设置为 true 之后,如果我不单击组合框的向下箭头部分,DataGridViewComboBoxCell 仍然需要单击两次才能打开。

有人知道如何解决这个问题吗?我有我自己使用的 DataGridView 类,因此我希望可以使用一些智能事件处理程序在系统范围内轻松解决这个问题。

谢谢。

最佳答案

因为您已经将 DataGridViewEditMode 属性设置为“EditOnEnter”,您可以覆盖它的 OnEditingControlShowing确保在组合框获得焦点后立即显示下拉列表的方法:

public class myDataGridView : DataGridView
{

    protected override void OnEditingControlShowing(DataGridViewEditingControlShowingEventArgs e)
    {
        base.OnEditingControlShowing(e);

        if (e.Control is ComboBox) {
            SendKeys.Send("{F4}");
        }
    }

}

只要 DataGridView 控件中的编辑控件获得输入焦点,上面的代码就会检查它是否是组合框。如果是这样,它 virtually "presses" F4 键,这会导致下拉部分展开(在任何组合框具有焦点时尝试!)。这有点像 hack,但它就像一个魅力。

关于c# - 我如何让 DataGridView 组合框一键显示下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4295785/

相关文章:

c# - 从 DragDrop 事件中将数据传递到线程的线程问题

c# - 为特定行禁用 jsgrid 的编辑和删除按钮

Windows Server 2008 R2 上的 .NET Framework 4 RTM

winforms - 如何使用 Windows 窗体在窗口标题栏中绘制自定义按钮?

c# - 键盘记录器如何显着提高 PostMessage() 的性能

c# - ToolStripMenuItem 添加到几个地方?

c# - 如何创建共享源文件的 nuget 包?

c# - 如何在不考虑平台的情况下在 C# 应用程序中使用 C++ 类?

c# - Azure 应用服务 - 自定义身份验证 - 不允许 HTTP 动词

c# - 如何在 OOP 中组织字符串集合?