在不使用鼠标的情况下删除datagridview组合框列

时间:2018-08-03 14:41:35

标签: c# winforms

我们最近发布了一个桌面应用程序(用于库存管理),我们的一个Beta测试人员告诉我,该应用程序可以正常运行,但是存在关于datagridview可用性的问题;他说,如果我可以使datagridview内的combobox列掉落,以便他可以使用键盘从列表中选择一个项目,而不必使用鼠标来下拉列表。

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

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

1 个答案:

答案 0 :(得分:0)

我使用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;
    }

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

对于DATAGRIDVIEWS

我为您提供了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属性。不知道是否有更好的方法可以做到这一点,但效果很好。