C# DataGridViewComboBoxColumn 支持edit
最近需要支持DataGridViewComboBoxColumn 支持编辑 的功能!对于这个功能。Framework不支持。我也表示不理解!都有这个ComboBoxColumn.然后不支持Edit,那要这个ComboBox做啥呢?要是几百个下拉,要人家一个一个找么!算了,在这里也就不吐槽了!下面就贴下网上捞的代码吧!我也不知道哪里捞的了,网上好像很多!反正大家都是抄来抄去的,也不新鲜了!估计都是想着自己备忘而已!
不多说了。
1. Copy代码:
using System.ComponentModel;
using System.Windows.Forms;
namespace UI
{
public class CustomDGVComboBoxCell : DataGridViewComboBoxCell
{
public override void InitializeEditingControl(int rowIndex, object initialFormattedValue,
DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle);
ComboBox comboBox = (ComboBox)base.DataGridView.EditingControl;
if (comboBox != null)
{
comboBox.DropDownStyle = ComboBoxStyle.DropDown;
comboBox.AutoCompleteMode = AutoCompleteMode.Suggest;
}
}
protected override object GetFormattedValue(object value, int rowIndex,
ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter,
TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context)
{
return base.GetFormattedValue(value, rowIndex, ref cellStyle, valueTypeConverter, formattedValueTypeConverter, context);
}
}
public class CustomDGVComboBoxColumn : DataGridViewComboBoxColumn
{
public CustomDGVComboBoxColumn()
{
CustomDGVComboBoxCell obj = new CustomDGVComboBoxCell();
this.CellTemplate = obj;
}
}
}
2. 怎么用是吧?网上都是copy了code,然后了事。这使得我们这些抄代码的就不知所措了!没事。我这里写下怎么用!(我这里是要在设计器里面的DGV里面直接选择Column类型的,至于那种自己写code的。直接调用就好了)
2.1 设计器里面编辑列,给自己的ComboBoxColumn设置ColumnType! 选择自己封装的那个CustomDGVComboBoxColumn 就好!
2.2 code里面怎么用。这是重点!这些什么绑定的时候啊!DisplayMember 、ValueMember 和DataSource.自然是你自己想要的!我这里只是参考!
((DataGridViewComboBoxColumn)dgv_ProjectManage.Columns["ProjectManage_DesignPhase"]).DisplayMember = "Name";
((DataGridViewComboBoxColumn)dgv_ProjectManage.Columns["ProjectManage_DesignPhase"]).ValueMember = "Name";
((DataGridViewComboBoxColumn)dgv_ProjectManage.Columns["ProjectManage_DesignPhase"]).DataSource =
new BindingList<Model.DesignPhaseConfig>(project_List_DesignPhase);