Как создать комбинированную ячейку с DisplayStyle ComboBoxList? - PullRequest
1 голос
/ 15 декабря 2011

У меня есть DataGridView и столбец с ячейками DataGridViewComboboxCell.DisplayStyle установлен как Ничто.Когда я начинаю печатать, эта ячейка меняет свой стиль на комбинированный.И я не могу предоставить свой текст, потому что элемент поиска ячейки в соответствии с предоставленным мною текстом.Я хочу изменить его стиль на comboboxlist, как и в combobox.У меня есть пустое поле, где я могу напечатать свой текст.Это можно сделать в выпадающем списке?

Спасибо

1 Ответ

2 голосов
/ 15 декабря 2011

вы можете попробовать вот так ..

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

или попробуйте вот так

private string[] list;
private DataSet ds;

public frmMain()
{
  InitializeComponent();
  ds = this.GetDataSet("SELECT deptName from empDept", "empDept");
  list = new string[ds.Tables[0].Rows.Count];
  comboBox1.AutoCompleteCustomSource.AddRange(list);
  comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
  comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
}


private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
  if (e.Control is ComboBox)
  {
    ComboBox cb = e.Control as ComboBox;
    cb.DropDownStyle = ComboBoxStyle.DropDown;

  }
}
...