Invalidate ничего не делает - PullRequest
0 голосов
/ 27 марта 2009

У меня есть сетевое представление в форме со связанным событием SelectionChanged.

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

   int noAttachments = 1;

   if (noAttachments > 0)
       btnAttachments.BackColor = Color.Yellow;
   else
       btnAttachments.BackColor = normalColour;

   btnAttachments.Invalidate();

Код работает как положено, за исключением того, что вызов Invalidate () ничего не делает! цвет кнопки не меняется!

Есть идеи почему?

Ответы [ 2 ]

1 голос
/ 27 марта 2009

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

Вы уверены, что свойство BackColor поддерживается для элемента управления, которым является btnAttachments (я предполагаю, что это обычная кнопка, но она может и не быть)?

Запрос дополнительной информации:

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

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

0 голосов
/ 27 марта 2009

Это должно работать. В идеале вам не нужно вызывать Invalidate при изменении свойства BackColor.

Вы уверены, что normalColor! = Color.Yellow?

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