How to Suggest Append ComboBox in DataGridView?

前端 未结 2 411
醉酒成梦
醉酒成梦 2020-12-19 03:41

I have a ComboBox in a c# Windows forms application where I have set AutoCompleteMode to SuggestAppend, and the text is a

相关标签:
2条回答
  • 2020-12-19 04:25

    You'd think you'd do it just like the normal 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;
    

    With the expectant results:

    AutoComplete ComboBox

    As it turns out, you can! But the selected option won't persist once you leave the cell. I found you have to change how you add the drop-down options and how you source them:

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

    This will provide you the desired results:

    AutoComplete DataGridViewComboBoxCell

    0 讨论(0)
  • 2020-12-19 04:27

    Here is a quick example of how to use an AutoComplete ComboBox in DataGridView in a Windows Application.

    Create one Windows Application and add DataGridView from toolbox to design. Now create two DataGridViewComboBoxColumns and add them to the 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);
            }
    

    Call both these methods from the Form Constructor.

    Now Click on DataGridView and generate EditingControlShowing event and write the folllowing code in it:

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

    This will work for all comboBoxes which are present in the DataGridView.

    Got from this post.

    0 讨论(0)
提交回复
热议问题