public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle) { base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); DataGridViewComboBoxExEditingControl clt = DataGridView.EditingControl as DataGridViewComboBoxExEditingControl; DataGridViewComboBoxExColumn col = (DataGridViewComboBoxExColumn)OwningColumn; clt.Items.Clear(); clt.Items.AddRange(col.DataSource);//不能用DataSource,因为绑定数据之后就不行对Items执行clear和add事件;另外,绑定数据后会默认选择第一行,如果需要输入多个字符,这样会产生全选,覆盖的输入效果。 clt.AutoCompleteMode = AutoCompleteMode.Suggest; //clt.FormattingEnabled = true; clt.Text = Convert.ToString(this.Value); }
public Form1() { InitializeComponent(); //TreeViewColumn cl1 = new TreeViewColumn(); //cl1.HeaderText = "树"; //dataGridView1.Columns.Add(cl1); //DataGridViewComboBoxExColumn cl2 = new DataGridViewComboBoxExColumn(); //cl2.HeaderText = "下拉框"; //dataGridView1.Columns.Add(cl2); DataTable table = new DataTable(); table.Columns.Add("AAA", typeof(DateTime)); table.Columns.Add("BBB", typeof(Decimal)); table.Columns.Add("CCC", typeof(String)); string[] tb2 = { "北京", "南京", "111" }; DataGridViewComboBoxExColumn col3 = new DataGridViewComboBoxExColumn(); col3.DataSource = tb2; col3.Width = 200; dataGridView1.Columns.Add(col3); for (int i = 0; i < 3; i++) { DataRow row = table.NewRow(); row["AAA"] = DateTime.Now; row["BBB"] = 123456789.1234567; row["CCC"] = 2; table.Rows.Add(row); } table.AcceptChanges(); CalendarColumn col4 = new CalendarColumn(); dataGridView1.Columns.Add(col4); this.dataGridView1.AutoGenerateColumns = false; this.dataGridView1.DataSource = table; }