如何在DataGridView中建议附加ComboBox?

我在c# Windows窗体应用程序中有一个ComboBox ,我将AutoCompleteMode设置为SuggestAppend ,文本自动附加到输入(图1)。

但是如果我在DataGridView ComboBox中将AutoCompleteMode设置为SuggestAppend ,则它不会附加文本(图2)。

如何在datagridviewcombobox中启用SuggestAppend

图。1 :

自动完成组合框

图2:

AutoComplete DataGridViewComboBoxCell

你会认为你就像普通的ComboBox

 this.comboBox1.AutoCompleteCustomSource = new AutoCompleteStringCollection(); this.comboBox1.AutoCompleteCustomSource.AddRange(new string[] { "Good night", "Good evening", "Good", "All Good", "I'm Good" }); this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; this.comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 

随着期待的结果:

自动完成组合框

事实certificate,你可以! 但是一旦离开单元格 ,所选选项将不会保留 。 我发现你必须改变你添加下拉选项的方式以及你如何获取它们:

 public Form1() { InitializeComponent(); DataGridViewComboBoxColumn cc = new DataGridViewComboBoxColumn(); cc.Name = "Combo"; cc.Items.AddRange(new string[] { "Good night", "Good evening", "Good", "All Good", "I'm Good" }); this.dataGridView1.Columns.Add(cc); } private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { ComboBox box = e.Control as ComboBox; if (box != null) { box.DropDownStyle = ComboBoxStyle.DropDown; box.AutoCompleteSource = AutoCompleteSource.ListItems; box.AutoCompleteMode = AutoCompleteMode.SuggestAppend; } } 

这将为您提供所需的结果:

AutoComplete DataGridViewComboBoxCell

以下是如何在Windows应用程序中的DataGridView中使用AutoComplete ComboBox的快速示例。

创建一个Windows应用程序并从工具箱添加DataGridView进行设计。 现在创建两个DataGridViewComboBoxColumns并将它们添加到DataGridView:

 public void ComboList1() { DataGridViewComboBoxColumn combo1 = new DataGridViewComboBoxColumn(); combo1.HeaderText = "Country"; combo1.Items.Add("Antarctica"); combo1.Items.Add("Belgium"); combo1.Items.Add("Canada"); combo1.Items.Add("Finland"); combo1.Items.Add("Albania"); combo1.Items.Add("India"); combo1.Items.Add("Barbados"); dataGridView1.Columns.Add(combo1); } public void ComboList2() { DataGridViewComboBoxColumn combo2 = new DataGridViewComboBoxColumn(); combo2.HeaderText = "Types of Jobs"; combo2.Items.Add("Accounting"); combo2.Items.Add("HR"); combo2.Items.Add("Finance"); combo2.Items.Add("Transportation"); combo2.Items.Add("Testing"); dataGridView1.Columns.Add(combo2); } 

从Form Constructor中调用这两个方法。

现在单击DataGridView并生成EditingControlShowing事件并在其中编写以下代码:

 if (e.Control is DataGridViewComboBoxEditingControl) { ((ComboBox)e.Control).DropDownStyle = ComboBoxStyle.DropDown; ((ComboBox)e.Control).AutoCompleteSource = AutoCompleteSource.ListItems; ((ComboBox)e.Control).AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest; } 

在此处输入图像描述

这适用于DataGridView中存在的所有combobox。

来自这篇文章 。