Как я могу немедленно изменить цвет строки, когда изменяется выбранный индекс DataGridViewComboBox? - PullRequest
0 голосов
/ 18 октября 2011

Я использую Windows Forms и имею DataGridView с DataGridViewComboBoxColumn, который связан с источником данных.

Когда пользователь выбирает другой элемент из поля со списком, я бы хотел немедленно изменить цвет строки, чтобы указать этот новый выбор.

Я протестировал несколько событий, таких как CellValueChanged и RowPrePaint, но для этого необходимо, чтобы пользователь щелкнул в строке после выбора.

Похоже, строка не обновляется сразу. Вместо этого он обновляется после того, как пользователь щелкает строку. (т.е. так работает большинство сеток, но я бы хотел изменить это поведение и дать пользователю немедленную обратную связь)

1 Ответ

0 голосов
/ 18 октября 2011

Вы можете использовать событие EditingControlShowing объекта DataGridView и добавить обработчик события для события ComboBox.SelectedIndexChanged:

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    ComboBox cb = e.Control as ComboBox;

    if (cb != null)
    {
        cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged);
    }
}

и в обработчике событий установите цвет для CurrentRow:

void cb_SelectedIndexChanged(object sender, EventArgs e)
{
    ComboBox cb = sender as ComboBox;

    if (cb != null)
    {
        // check the selected index, update the DataGridView.CurrentRow.DefaultCellStyle.BackColor
    }
}
...