Возможно ли иметь столбец в DataGridView, который работает как ComboBox, который позволяет пользователю вводить новое значение? - PullRequest
4 голосов
/ 07 июня 2011

Я знаю, что в обычном ComboBox, если FlatStyle равно Standard, пользователь сможет ввести значение, которого нет в списке Items.Но если поле со списком в DataGridView равно Standard, оно не позволит мне ввести новое значение.Можно ли достичь этой функциональности в столбце в DataGridView?

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Ну, в DataGridView вы можете добавить столбец типа DataGridViewComboBoxColumn. Это DisplayStyle и / или FlatStyle зависит от текущего состояния строки. Я думаю, что когда вы добавляете новую строку (режим редактирования), вы можете добавлять значения к ней.

Ссылка: Добавление элементов в DataGridViewComboBoxColumn в DataGridView во время выполнения http://www.lazycoder.com/weblog/2006/09/12/adding-values-to-the-datagridviewcomboboxcell-at-runtime/

0 голосов
/ 24 декабря 2014
    private void dataGridView2_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        try
        {
            switch (dataGrid_ItemsList.Columns[dataGrid_ItemsList.SelectedCells[0].ColumnIndex].HeaderText)
            {
                case "Batch":
                    if (e.Control is ComboBox)
                    {
                        ComboBox _with1 = (ComboBox)e.Control;
                        _with1.DropDownStyle = ComboBoxStyle.DropDown;
                        _with1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
                        _with1.AutoCompleteSource = AutoCompleteSource.CustomSource;
                        _with1.AutoCompleteCustomSource = BatchList;
                        //_with1.Validating -= HandleComboBoxValidating;
                        //_with1.Validating += HandleComboBoxValidating;

                        _with1.Validating += (ss, ee) =>
                        {
                            if (!_with1.Items.Contains(_with1.Text))
                            {
                                var comboColumn = dataGrid_ItemsList.CurrentCell as DataGridViewComboBoxCell;
                                _with1.Items.Add(_with1.Text);
                                _with1.Text = _with1.Text;
                                comboColumn.Items.Add(_with1.Text);
                                this.dataGrid_ItemsList.CurrentCell.Value = _with1.Text;
                            }
                        };
                    }
                    break;
            }
        }
        catch (Exception ex)
        {
            _CommonClasses._Cls_ExceptionsHandler.HandleException(ex,false);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...