2010-11-19 76 views
7

我在VisualStudio 2010 C#Winforms中遇到了一些麻烦。DataGridViewComboBox - 如何允许任何值?

我创建了一个DataGridView,其中包含DataGridViewComboBoxColumn类型的未绑定列。该列工作正常,除了不像一个普通的ComboBox,我似乎无法输入任何值。我不得不从列表中选择一个值。

是否有一个属性,我需要设置或另一种类型,我可以使用,这将允许我在单元格中输入任何值,除了提供一个列表来选择一个值?

谢谢!

回答

10

我不觉得有什么,让这样的属性,但我找到了答案here与一个小的修改工作。

尝试添加下列2事件处理程序,这里假设一列名为comboBoxColumn

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; 
     } 
    } 
} 
+0

完美!谢谢! – 2010-11-22 14:40:46

0

DataGridViewComboBoxColumn被设计为用于从可能值中进行选择 - 而不是用于输入数据。如果你想添加任何数据,你应该期望的DataGridViewComboBoxCell做编程:

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