Событие C# - TabPage Color

C#, конечно, не является моей сильной стороной, таким образом, я ценю весь щедрый народ, делящийся их знаниями. Я работаю с Windows Form, и я читал на событиях и нашел некоторую превосходную справку о том, как изменить TabControl, таким образом, у меня может быть событие OnDraw, которое добавит некоторую окраску к вкладкам.

Цвет каждой вкладки основан на состоянии переменной соединения: Текущий (зеленый) Потерянный (красный) Устаревший (желтый)

Работы события OnDraw, превосходные для обновления цвета каждой вкладки, но который только происходит, когда пользователь выбирает другую вкладку для просмотра.

То, что я хотел бы произойти, для цвета каждой вкладки, которая будет обновлена каждый раз, когда состояние соединения изменяется. Например, скажем, Tab#1 окрашен в зеленый, но затем состояние соединения изменяется на устаревший поэтому теперь, вкладка должна быть окрашена в желтый, но это не будет окрашено как этот, пока пользователь не нажмет на другую вкладку, и событие OnDraw инициировано.

Таким образом, я пытаюсь выяснить, как сделать это. Когда событие OnDraw обычно инициировано (пользователем, нажимающим на другую вкладку), параметр "DrawItemEventArgs" передается в ровный обработчик. Та переменная уже заполняется с подходящими данными, должен был выяснить, на какую вкладку нажали, границы той вкладки и и т.д. Таким образом, я не уверен, куда это прибыло из или как я могу программно воссоздать такой вызов, чтобы повторно окрасить вкладки каждый раз, когда переменная соединения изменяется.

Сообщите мне, должен ли я разъяснить что-нибудь!Спасибо.

1
задан AMissico 21 June 2010 в 15:35
поделиться

3 ответа

Вы можете вызвать Invalidate () в элементе управления, чтобы принудительно перерисовать.

1
ответ дан 2 September 2019 в 23:36
поделиться

Если вы хотите, чтобы происходило постоянное обновление, вам, вероятно, потребуется создать System.Timers.Timer объект.

После того, как вы создадите таймер и установите значение тика таймера на любой нужный вам интервал (в миллисекундах), он будет запускать событие OnTimerTick через равные промежутки времени. Из этого события вы можете инициировать вызов метода OnDraw с помощью метода Invalidate () . Invalidate сообщает системе, что ваш экран необходимо обновить, и она вызовет OnDraw и OnPaint при следующей возможности.

0
ответ дан 2 September 2019 в 23:36
поделиться

Если у вас есть событие, запускаемое при изменении состояния вашего соединения, вы можете сделать

InvalidateVisual()

на всех ваших вкладках внутри этого события.

1
ответ дан 2 September 2019 в 23:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: