Как предложить добавить ComboBox в DataGridView?
у меня есть ComboBox
на c#
приложение Windows forms, где я установил AutoCompleteMode
to SuggestAppend
, и текст автоматически добавляется к входному (Рис. 1).
но если я поставил AutoCompleteMode
to SuggestAppend
на DataGridView ComboBox
текст не добавляется (рис. 2).
как я могу включить SuggestAppend
в datagridview комбобокс?
Рис. 1 :
Рис. 2 :
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;
}
}
Это обеспечит вам желаемые результаты:
вот краткий пример использования автозаполнения ComboBox в DataGridView в приложении Windows.
создайте одно приложение Windows и добавьте DataGridView из toolbox в design. Теперь создайте два 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);
}
вызовите оба этих метода из конструктора формы.
теперь нажмите на 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;
}
это будет работать для всех comboBoxes, которые присутствуют в DataGridView.
получил от этот пост.