C# DataGridViewComboBox-如何允许任何值?

C# DataGridViewComboBox-如何允许任何值?,c#,winforms,C#,Winforms,我在VisualStudio 2010 C Winforms方面遇到一些问题 我创建了一个DataGridView,其中有一个未绑定的列,类型为DataGridViewComboBoxColumn。该列工作正常,除了与普通组合框不同,我似乎无法键入任何值。我被迫从列表中选择一个值 除了提供从中选择值的列表外,是否有需要设置的属性或可以使用的其他类型允许我在单元格中输入任何值 谢谢 DataGridViewComboxColumn是为从可能的值中进行选择而设计的,而不是用于键入数据。如果要添加任何

我在VisualStudio 2010 C Winforms方面遇到一些问题

我创建了一个DataGridView,其中有一个未绑定的列,类型为DataGridViewComboBoxColumn。该列工作正常,除了与普通组合框不同,我似乎无法键入任何值。我被迫从列表中选择一个值

除了提供从中选择值的列表外,是否有需要设置的属性或可以使用的其他类型允许我在单元格中输入任何值


谢谢

DataGridViewComboxColumn是为从可能的值中进行选择而设计的,而不是用于键入数据。如果要添加任何数据,应以编程方式为所需的DataGridViewComboxCell添加数据:

((DataGridViewComboBoxCell)dataGridView1[0,0]).Items.AddRange(new string [] {"A","B","C"});

我不认为有一个属性允许这样做,但我找到了一个答案,只需稍加修改

尝试添加以下两个事件处理程序,此处假设一个名为comboBoxColumn的列:


这对我所需要的非常有效,只有一个例外。当我试图编辑一个不同的列时,它给了我一个错误,所以我向EditControlShowing事件添加了一些内容,以便检测正在编辑的列。。。我使用VB.NET,所以如果语法有点不同,请原谅。。。。如果dataGridView1.CurrentCell.ColumnIndex=comboBoxColumn.Index,则该事件中的所有内容都将结束
private void dataGridView1_EditingControlShowing(object sender, 
        DataGridViewEditingControlShowingEventArgs e)
{
    ComboBox c = e.Control as ComboBox;
    if (c != null) c.DropDownStyle = ComboBoxStyle.DropDown;
}

private void dataGridView1_CellValidating(object sender, 
        DataGridViewCellValidatingEventArgs e)
{
    if (e.ColumnIndex == comboBoxColumn.Index)
    {
        object eFV = e.FormattedValue;
        if (!comboBoxColumn.Items.Contains(eFV))
        {
            comboBoxColumn.Items.Add(eFV);
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = eFV;
        }
    }
}