2015-05-06 3 views
7

У меня есть ComboBox в приложении c# Windows Forms, где я установил AutoCompleteMode в SuggestAppend, и текст автоматически добавляется к вводу (рис. 1).Как предложить добавить ComboBox в DataGridView?

Но если я установил AutoCompleteMode в SuggestAppend в DataGridView ComboBox, он не добавляет текст (рис. 2).

Как включить SuggestAppend в полете данных datagridview?

Рис 1:

AutoComplete ComboBox

Рис 2:

AutoComplete DataGridViewComboBoxCell

+0

Взгляните на [этот пост] (http://stackoverflow.com/a/5978017/1014320). Это было полезно для меня. – vaheeds

ответ

4

Можно подумать, что вы могли бы сделать это так же, как нормальный 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; 

С ожидаемыми результатами :

AutoComplete ComboBox

Как оказалось, вы можете! Но выбранный вариант не сохранится, как только вы покинете ячейку. Я обнаружил, вы должны изменить как добавить параметры раскрывающихся и как источник их:

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

+0

спасибо @OhBeWise за ваше время, на самом деле я написал тот же код, но вместо этого предложилAppend, я написал только предложение :) – tharif

0

Вот быстрый пример использования AutoComplete ComboBox в DataGridView в приложении Windows.

Создайте одно приложение 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); 
     } 

вызовов как эти методы из формы Конструктора.

Кликните на DataGridView и генерировать EditingControlShowing событие и написать folllowing код в нем:

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; 
      } 

enter image description here

Это будет работать для всех ComboBoxes, которые присутствуют в DataGridView.

получен из this post.

Смежные вопросы