C#, конечно, не является моей сильной стороной, таким образом, я ценю весь щедрый народ, делящийся их знаниями. Я работаю с Windows Form, и я читал на событиях и нашел некоторую превосходную справку о том, как изменить TabControl, таким образом, у меня может быть событие OnDraw, которое добавит некоторую окраску к вкладкам.
Цвет каждой вкладки основан на состоянии переменной соединения: Текущий (зеленый) Потерянный (красный) Устаревший (желтый)
Работы события OnDraw, превосходные для обновления цвета каждой вкладки, но который только происходит, когда пользователь выбирает другую вкладку для просмотра.
То, что я хотел бы произойти, для цвета каждой вкладки, которая будет обновлена каждый раз, когда состояние соединения изменяется. Например, скажем, Tab#1 окрашен в зеленый, но затем состояние соединения изменяется на устаревший поэтому теперь, вкладка должна быть окрашена в желтый, но это не будет окрашено как этот, пока пользователь не нажмет на другую вкладку, и событие OnDraw инициировано.
Таким образом, я пытаюсь выяснить, как сделать это. Когда событие OnDraw обычно инициировано (пользователем, нажимающим на другую вкладку), параметр "DrawItemEventArgs" передается в ровный обработчик. Та переменная уже заполняется с подходящими данными, должен был выяснить, на какую вкладку нажали, границы той вкладки и и т.д. Таким образом, я не уверен, куда это прибыло из или как я могу программно воссоздать такой вызов, чтобы повторно окрасить вкладки каждый раз, когда переменная соединения изменяется.
Сообщите мне, должен ли я разъяснить что-нибудь!Спасибо.
Вы можете вызвать Invalidate ()
в элементе управления, чтобы принудительно перерисовать.
Если вы хотите, чтобы происходило постоянное обновление, вам, вероятно, потребуется создать System.Timers.Timer
объект.
После того, как вы создадите таймер и установите значение тика таймера на любой нужный вам интервал (в миллисекундах), он будет запускать событие OnTimerTick
через равные промежутки времени. Из этого события вы можете инициировать вызов метода OnDraw
с помощью метода Invalidate ()
. Invalidate сообщает системе, что ваш экран необходимо обновить, и она вызовет OnDraw и OnPaint при следующей возможности.
Если у вас есть событие, запускаемое при изменении состояния вашего соединения, вы можете сделать
InvalidateVisual()
на всех ваших вкладках внутри этого события.