DataGridViewComboBoxColumn实现DropDownList功能,该功能根据列表中的值验证数据。
我想实现一个自定义列,其行为类似于具有DropDown功能的ComboBox,它不会根据列表验证数据。
有没有办法创建一个自定义列:
是否有人有此行为的示例代码?
答案 0 :(得分:0)
我尝试了多种解决方案,并决定使用标准文本框列并启用自动完成功能。我没有使用自定义列。
在初始化期间,我创建了一个包含下拉列表
元素的AutoCompleteStringCollectionprivate AutoCompleteStringCollection _SerialNumbers ;
我附加到EditingControlShowing事件,检查它是否是正确的列并启用自动完成。
private void dgvChannels_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if ( dgvChannels.CurrentCell.OwningColumn == SerialNumber )
{
TextBox c = e.Control as TextBox;
if (c != null)
{
c.AutoCompleteMode = AutoCompleteMode.Suggest;
c.AutoCompleteCustomSource = _SerialNumbers;
c.AutoCompleteSource = AutoCompleteSource.CustomSource;
}
}
}
在功能上,具有自动完成功能的文本框与具有DropDown样式的Combobox非常相似。就我而言,功能实际上更好。
奇怪的是,您还可以在ComboBox上使用AutoComplete,这可能会导致同时出现两个删除列表。这是一些用户体验!