我有一个datagridview,它有两列,我希望在两列上实现自动完成。这些列是datagridviewtextboxcolumn和datagridviewcomboboxcolumns。我认为自动完成可以在datagridview的editcontrolshowing事件中完成(我的代码中有这个),但我似乎无法弄清楚它是如何工作的。
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (dataGridView1.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox)
{
ComboBox comboBox = e.Control as ComboBox;
comboBox.AutoCompleteMode = AutoCompleteMode.Suggest;
comboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
comboBox.TextChanged += LastColumnComboSelectionChanged;
}
if (dataGridView1.CurrentCell.ColumnIndex == 2 && e.Control is TextBox)
{
if (e.Control.Enabled)
{
TextBox POCText = e.Control as TextBox;
POCText.MouseDoubleClick += new MouseEventHandler(POCText_MouseDoubleClick);
}
}
}
答案 0 :(得分:0)
你是正确的道路,如果你正在使用win-form应用程序,你必须根据你的数据源选择AutoCompleteSource,大多数我们有Table,数组或其他东西,在这种情况下,我们应该使用AutoCompleteSource = AutoCompleteSource.CustomSource。
在分配AutoCompleteCustomeSource之后你不需要实现任何其他事件来显示自动完成列表,.Net管理它自己,这里是一个链接,这里问的问题一样,解决方案很好,我试过了,它正在努力。