我在使用VisualStudio 2010 C# Winforms时遇到了一些问题。
我已经创建了一个具有DataGridViewComboBoxColumn类型的未绑定列的DataGridView。这个列工作得很好,除了与普通的ComboBox不同,我似乎不能输入任何值。我被迫从列表中选择一个值。
是否有我需要设置的属性,或者我可以使用的另一种类型,除了提供一个从中挑选一个值的列表之外,还允许我在单元格中输入任何值?
谢谢!
发布于 2010-11-20 06:39:37
我不认为有一个属性会允许这一点,但我找到了一个答案here,它只做了一个小小的修改。
尝试添加以下两个事件处理程序,这里假设有一个名为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;
}
}
}发布于 2010-11-20 06:23:24
DataGridViewComboBoxColumn是为从可能的值中进行选择而设计的,而不是用于键入数据。如果您想要添加任何数据,您应该以编程方式为所需的DataGridViewComboBoxCell执行此操作:
((DataGridViewComboBoxCell)dataGridView1[0,0]).Items.AddRange(new string [] {"A","B","C"});https://stackoverflow.com/questions/4229810
复制相似问题