Цветовые ряды просмотра данных без замораживания C # - PullRequest
0 голосов
/ 08 октября 2010

У меня есть обзор данных с 5000 записями. И я хочу покрасить строки на основе некоторых значений. Вот как я это делаю:

    foreach (DataGridViewRow row in rows)
    {
        var handlingStage = (ESourceHandlingStage)row.Cells["HandlingStage"].Value;
        switch (handlingStage)
        {
            case ESourceHandlingStage.NotStarted:
                row.DefaultCellStyle.BackColor = UnhandledColor;
                row.DefaultCellStyle.SelectionBackColor = Color.Blue;
                break;
            case ESourceHandlingStage.Given:
                row.DefaultCellStyle.BackColor = GivenColor;
                row.DefaultCellStyle.SelectionBackColor = Color.Blue;
                break;
            case ESourceHandlingStage.Taken:
                row.DefaultCellStyle.BackColor = TakenColor;
                row.DefaultCellStyle.SelectionBackColor = Color.Blue;
                break;
            case ESourceHandlingStage.Handled:
                row.DefaultCellStyle.BackColor = HandledColor;
                row.DefaultCellStyle.SelectionBackColor = Color.Blue;
                break;
            case ESourceHandlingStage.Loaded:
                row.DefaultCellStyle.BackColor = LoadedColor;
                row.DefaultCellStyle.SelectionBackColor = Color.Blue;
                break;
            default:
                break;
        }
    }

Но когда форма загружается, она останавливается на пару секунд. Могу ли я избежать этого?
Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 08 октября 2010

Попробуйте покрасить строку в привязке данных. Я думаю, что вам нужно прикрепить к событию ItemDataBound или что-то подобное. Проверьте данные и соответственно раскрасьте строку. Таким образом, вам не нужно перебирать все строки после их создания, но вместо этого вы выполняете свою работу при их создании.

1 голос
/ 08 октября 2010

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

Альтернативой может быть изменение цвета при добавлении каждой строки.Однако это зависит от того, добавляются ли ваши данные по одной строке за раз.

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