我在VisualStudio 2010 C#Winforms中遇到了一些麻烦。DataGridViewComboBox - 如何允许任何值?
我创建了一个DataGridView,其中包含DataGridViewComboBoxColumn类型的未绑定列。该列工作正常,除了不像一个普通的ComboBox,我似乎无法输入任何值。我不得不从列表中选择一个值。
是否有一个属性,我需要设置或另一种类型,我可以使用,这将允许我在单元格中输入任何值,除了提供一个列表来选择一个值?
谢谢!
我在VisualStudio 2010 C#Winforms中遇到了一些麻烦。DataGridViewComboBox - 如何允许任何值?
我创建了一个DataGridView,其中包含DataGridViewComboBoxColumn类型的未绑定列。该列工作正常,除了不像一个普通的ComboBox,我似乎无法输入任何值。我不得不从列表中选择一个值。
是否有一个属性,我需要设置或另一种类型,我可以使用,这将允许我在单元格中输入任何值,除了提供一个列表来选择一个值?
谢谢!
我不觉得有什么,让这样的属性,但我找到了答案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;
}
}
}
DataGridViewComboBoxColumn被设计为用于从可能值中进行选择 - 而不是用于输入数据。如果你想添加任何数据,你应该期望的DataGridViewComboBoxCell做编程:
((DataGridViewComboBoxCell)dataGridView1[0,0]).Items.AddRange(new string [] {"A","B","C"});
完美!谢谢! – 2010-11-22 14:40:46