private void myDataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { DataTable dt = (DataTable)myDataGridView1.DataSource; string colName = dt.Columns[myDataGridView1.CurrentCell.ColumnIndex].ColumnName; int indexrow = myDataGridView1.CurrentCell.RowIndex; string name = ""; string model = ""; string str = ""; string text = (e.Control as TextBox).Text; foreach (Map map in param.Maps) { if (map.Value == colName) { str = map.Name; } if (map.Name.Equals("cInvName")) { if (dt.Rows.Count > indexrow) { name = dt.Rows[indexrow][map.Value].ToString(); } } else if (map.Name.Equals("cInvStd")) { if (dt.Rows.Count > indexrow) { model = dt.Rows[indexrow][map.Value].ToString(); } } } DataGridViewTextBoxEditingControl editingControl = e.Control as DataGridViewTextBoxEditingControl; editingControl.AutoCompleteCustomSource.Clear(); if (str.Equals("cInvName")) { if (!model.Equals("")) { sqlProcessor.GetNameAndModel(text, model, out newnames, out newmodels); if (newnames != null) { editingControl.AutoCompleteCustomSource.AddRange(newnames); } } else { if (names != null) { editingControl.AutoCompleteCustomSource.AddRange(names); } } } else if (str.Equals("cInvStd")) { if (!name.Equals("")) { newmodels = sqlProcessor.GetModel(name); if (newmodels != null) { editingControl.AutoCompleteCustomSource.AddRange(newmodels); } } else { if (models != null) { editingControl.AutoCompleteCustomSource.AddRange(models); } } } editingControl.AutoCompleteMode = AutoCompleteMode.SuggestAppend; editingControl.AutoCompleteSource = AutoCompleteSource.CustomSource; }