DataGridView ComboBox Column: Изменить значение ячейки после выбора из выпадающего списка? - PullRequest
17 голосов
/ 08 марта 2012

Я установил ComboBoxColumn для моего DataGridView и установил его выбираемые значения из перечисления.В основном это работает так, как мне хотелось бы, за исключением следующего:

Всякий раз, когда я щелкаю стрелку выпадающего меню и затем выбираю одно из значений перечисления, он остается в «промежуточном» состоянии, где событие CellValueChanged не являетсясрабатывает.Мне нужно сосредоточиться на другой ячейке или другом элементе управления для запуска события.

У меня также есть обработчик события для события Leaving DataGridView, который «проверяет» содержимое, следя за тем, чтобы ни одна ячейка не была пустой.

Итак, если я создаю строку, заполняю все ячейки и перехожу к (в настоящее время пустому) столбцу ComboBox, измените его на значение и нажмите кнопку «Выполнить»;мое диалоговое окно с ошибкой всплывает, потому что выбор ComboBox не был "сохранен".

Как я могу обойти это?Есть ли способ, которым после того, как я выбираю значение из выпадающего списка, оно автоматически «устанавливает» значение?

Спасибо!

Ответы [ 12 ]

0 голосов
/ 14 августа 2014
void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
    dataGridView1.BeginEdit(true);
    ComboBox cmbMiCtrl=(ComboBox)dataGridView1.EditingControl;
    string Valor= cmbMiCtrl.Text;
    dataGridView1.EndEdit();
}
0 голосов
/ 16 ноября 2012

Вот как я решил проблему

Private Sub dgvEcheancier_CurrentCellDirtyStateChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dgvEcheancier.CurrentCellDirtyStateChanged
        nbreClick += 1
            With dgvEcheancier
                Select Case .CurrentCell.ColumnIndex
                Case 9
                    Dim col As DataGridViewComboBoxColumn = .Columns(9)
                    If TypeOf (col) Is DataGridViewComboBoxColumn Then
                        dgvEcheancier.CommitEdit(DataGridViewDataErrorContexts.Commit)
                        If nbreClick = 2 Then
                            MessageBox.Show("y" & "val=" & .CurrentCell.Value)
                            nbreClick = 0
                        End If
                    End If

            End Select
            End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...