как изменить BackColor / ForeColor отдельной ячейки в ObjectListView - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь установить ForeColor ячейки в ObjectListView. Есть вопросы и ответы по этому поводу на SO и других сайтах, которые предлагают использовать FormatCell событие ObjectListView. как это задокументировано в http://objectlistview.sourceforge.net/cs/recipes.html#how -кан-я-изменить-цвета-строки-или-просто-ячейки

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

 foreach (OLVListItem item in olv.Items)
      if (item.SubItems[7].Text != "")
      {
          if (item.SubItems[7].Text.StartsWith("-"))
              item.SubItems[7].ForeColor = Color.Red;
          else item.SubItems[7].ForeColor = Color.DarkGreen;
      }

, но приведенный выше код не влияет на результаты.

1 Ответ

1 голос
/ 28 апреля 2020

Я нашел ответ, случайно просматривая его свойства. Я добавляю это как ответ, чтобы это могло помочь другим. OLVListItem имеет свойство UseItemStyleForSubItems, которое по умолчанию равно true, которое использует те же Font, ForeColor и BackColor ObjectListView для своих элементов. установив его значение в false сработало:

foreach (OLVListItem item in olv.Items)
      if (item.SubItems[7].Text != "")
      {
         item.UseItemStyleForSubItems = false;
          if (item.SubItems[7].Text.StartsWith("-"))
              item.SubItems[7].ForeColor = Color.Red;
          else item.SubItems[7].ForeColor = Color.DarkGreen;
      }
...