如何在 DataGridView 中建议附加 ComboBox?
How to Suggest Append ComboBox in DataGridView?
我在 c#
Windows 表单应用程序中有一个 ComboBox
,我已将 AutoCompleteMode
设置为 SuggestAppend
,文本会自动附加到输入(图 1)。
但是如果我在 DataGridView ComboBox
中将 AutoCompleteMode
设置为 SuggestAppend
它不会附加文本(图 2)。
如何在数据网格视图组合框中启用 SuggestAppend
?
图 1 :
图 2 :
你认为你会像平常那样做 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;
有了预期的结果:
事实证明,你可以!但是一旦您离开单元格,选定的选项将不会保留。我发现您必须更改 如何 添加下拉选项以及如何获取它们:
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;
}
}
这将为您提供所需的结果:
这里是一个快速示例,说明如何在 Windows 应用程序的 DataGridView 中使用自动完成组合框。
创建一个 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 中存在的所有组合框。
来自 this post.
我在 c#
Windows 表单应用程序中有一个 ComboBox
,我已将 AutoCompleteMode
设置为 SuggestAppend
,文本会自动附加到输入(图 1)。
但是如果我在 DataGridView ComboBox
中将 AutoCompleteMode
设置为 SuggestAppend
它不会附加文本(图 2)。
如何在数据网格视图组合框中启用 SuggestAppend
?
图 1 :
图 2 :
你认为你会像平常那样做 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;
有了预期的结果:
事实证明,你可以!但是一旦您离开单元格,选定的选项将不会保留。我发现您必须更改 如何 添加下拉选项以及如何获取它们:
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;
}
}
这将为您提供所需的结果:
这里是一个快速示例,说明如何在 Windows 应用程序的 DataGridView 中使用自动完成组合框。
创建一个 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 中存在的所有组合框。
来自 this post.