在datagridviewtextboxcolumn和datagridviewcomboboxcoumn上实现自动完成功能

时间:2012-11-25 21:41:21

标签: c# winforms datagridview

我有一个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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

你是正确的道路,如果你正在使用win-form应用程序,你必须根据你的数据源选择AutoCompleteSource,大多数我们有Table,数组或其他东西,在这种情况下,我们应该使用AutoCompleteSource = AutoCompleteSource.CustomSource。

在分配AutoCompleteCustomeSource之后你不需要实现任何其他事件来显示自动完成列表,.Net管理它自己,这里是一个链接,这里问的问题一样,解决方案很好,我试过了,它正在努力。

http://social.msdn.microsoft.com/Forums/en-US/winformsapplications/thread/30b5e4dc-5ecd-488e-9381-a7085e99b3a7/