【问题标题】:Dropping datagridview combobox column without using mouse在不使用鼠标的情况下删除 datagridview 组合框列
【发布时间】:2018-08-03 14:41:35
【问题描述】:

我们最近发布了一个桌面应用程序(用于库存管理),我们的一位 Beta 测试人员告诉我,该应用程序运行良好,但存在关于 datagridview 可用性的问题;他说,如果我可以让 datagridview 中的组合框列下降,那么他可以使用键盘从列表中选择一个项目,而无需使用鼠标下拉该列表。

通过这样做,我们的客户将能够以更舒适的方式将数据填充到 datagridview 中。

该应用程序是使用 c# 编写的 Windows 窗体应用程序

【问题讨论】:

  • Alt+向下箭头不起作用?
  • 他只想使用向下箭头。如果可能的话
  • alt+down 打开组合框,然后向下/向上箭头在项目之间移动。
  • 另一件事是我可以让 datagridview 的 (cellvaluechanged) 事件在每年的击键上都起作用,而不必移动到下一个单元格?
  • Alt+向下箭头是标准,首先要做的是让您的 Beta 测试人员了解这一点。

标签: c# winforms


【解决方案1】:

我使用 Focus ENTER 事件和 ComboBox 的 DroppedDown 属性为您制作了一个示例。

对于简单的组合框

for (int i = 0; i < 7; i++)
    {
      comboBox1.Items.Add(String.Format("Test{0}", i));
    }
    private void comboBox1_Enter(object sender, EventArgs e)
    {
      comboBox1.DroppedDown = true;
    }

这样,当他聚焦时,组合框会掉落。

用于数据网格视图

我已经为你提供了一个适用于 datagridview 的解决方案:

private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
{
 if (e.RowIndex > 0) //this might change for you depending on your header
 {
  if (dataGridView1.SelectedCells[0].GetType().Name = "DataGridViewComboBoxCell")
   {
    dataGridView1.BeginEdit(true);
    ComboBox comboBox = (ComboBox)dataGridView1.EditingControl;
    comboBox.DroppedDown = true;
    }
 }
}

它使用datagridview 的CELLENTER 属性。不知道是否有更好的方法可以做到这一点,但它确实有效。

【讨论】:

  • 你指的是什么焦点事件?这是一个在 datagridview 中带有组合框列的 winforms 应用程序。
  • this.comboBox1.Enter += new System.EventHandler(this.comboBox1_Enter);这个。它适用于 WinForm。我刚试过。
  • 如何对网格列中的组合框执行此操作?
  • @Crowcoder 我已经编辑了我的帖子并为 gridcolumn 制定了一个可行的解决方案
猜你喜欢
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
  • 2014-02-07
  • 2014-08-23
  • 2019-01-20
  • 2021-02-12
  • 1970-01-01
  • 2023-02-06
相关资源
最近更新 更多