DataGridViewComboBoxColumn在第一次单击时不会打开下拉列表

dot*_*NET 6 c# datagridview winforms

任何人都标志着这是重复之前,PLZ注意,这是不一样的问题问在这里,这里这里.

如果您有两个或更多个DataGridViewComboBoxColumn,DataGridView并且其中一个的下拉列表当前处于打开状态,则单击其他列的下拉按钮不会打开该下拉列表.相反,你仍然需要点击两次.首次单击会隐藏已打开的下拉列表,第二次单击实际上会打开您单击的下拉列表.

请注意,EditOnEnter模式为ON 时需要两次单击; 否则你必须执行三次点击才能完成这项工作.我也尝试过ContentClick事件,没有任何好处.

那么当DataGridViewComboBoxColumn我的网格中有多个操作时,如何使用一键操作?

更新

以防万一有人想要重现它,这是一个过程:

  1. 创建一个新的WinForms C#项目.
  2. 转到Form1的代码并将其粘贴到InitializeComponent行后面的构造函数中:

    DataGridView dgv = new DataGridView();
    DataGridViewComboBoxColumn col1 = new DataGridViewComboBoxColumn();
    DataGridViewComboBoxColumn col2 = new DataGridViewComboBoxColumn();
    
    dgv.Columns.AddRange(new DataGridViewColumn[] { col1, col2 });
    dgv.Dock = DockStyle.Fill;
    dgv.EditMode = DataGridViewEditMode.EditOnEnter;
    
    col1.Items.AddRange(new object[] { "Cat", "Dog", "Elephant", "Lion" });
    col2.Items.AddRange(new object[] { "Duck", "Hen", "Crow", "Sparrow" });
    
    this.Controls.Add(dgv);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 运行该项目.单击第一个下拉列表,然后单击另一个下拉列表而不关闭第一个下拉列表.它将需要2或3次点击(取决于您在第二个下拉列表中单击的位置)才能打开第二个列表.

Ale*_* X. 1

你的代码没有任何问题。这是 .NET DataGridView 控件的设计行为。

如果您单击下拉控件右侧的按钮(向下箭头)而不是文本区域,则下拉列表将立即显示 - 1 单击

如果单击下拉控件的文本区域,将首先获得焦点,然后显示下拉列表 -单击 2 次

如果此时展开另一个下拉列表,则需要额外单击才能折叠它 - 即单击 3 次

有几种解决方法可以改善这种行为。看看这个 MSDN讨论。恕我直言,这些类型的更改并不值得,但当然取决于您来决定什么最适合您的项目。

此致。