Обновление стиля ячейки Datagridview - PullRequest
2 голосов
/ 09 ноября 2011

У меня странная проблема с сеткой данных. Мне нужно изменить стиль выбранной ячейки (A) в ответ на значение другой ячейки (B) = x. (A) - это текстовое поле, а (B) - поле со списком. Я ловлю событие CellEndEdit, и все работает нормально, когда пользователь меняет значение (B): стиль (A) изменяется немедленно.

Теперь, когда я пытаюсь программно обновить представление данных, это не работает. Странно то, что оба способа используют один и тот же метод UpdateTimeChannelCell. Если я вызываю этот метод программным способом, представление данных не обновляет стиль своих ячеек. Я попытался, обновив, обновив, аннулировав datagridview без удачи

        private void UpdateTimeChannelCell(DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 1 || e.ColumnIndex == 3 || e.ColumnIndex == 5 || e.ColumnIndex == 7 || e.ColumnIndex == 9 || e.ColumnIndex == 11 || e.ColumnIndex == 13)
        {
            if ((int)this.dataGridView_TidKanaler.Rows[e.RowIndex].Cells[e.ColumnIndex].Value == 0)
            {
                this.dataGridView_TidKanaler.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Value = new Time();
                this.dataGridView_TidKanaler.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Style = disableStyle;
            }
            else
            {
                this.dataGridView_TidKanaler.Rows[e.RowIndex].Cells[e.ColumnIndex - 1].Style = enableStyle;
            }
        }
    }

Ответы [ 2 ]

4 голосов
/ 09 ноября 2011

Насколько я знаю, все стилирование для DataGridViews должно происходить в событии DataGridView.CellFormatting.

Это событие - ваша возможность изменить стиль / цвет ячеек по умолчанию.

1 голос
/ 22 июня 2016

Мне пришлось принудительно обновить сетку, чтобы обновить стили.например.this.dataGridView_TidKanaler.Refresh ()

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