2

我有一个具有多列的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);
            }
        }
    }
4

1 回答 1

0

您走在正确的道路上,如果您正在开发 win-form 应用程序,则必须根据您的数据源选择 AutoCompleteSource,主要是我们有表、数组或其他东西,在这种情况下,我们应该使用 AutoCompleteSource = AutoCompleteSource。自定义来源。

分配 AutoCompleteCustomeSource 后,您不需要实现任何其他事件来显示自动完成列表,.Net 自行管理,这是一个链接,与此处提出的问题相同,解决方案很好,我已经尝试过了,它正在工作。

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

于 2013-03-31T04:30:26.113 回答