C# - TabPage颜色事件

时间:2010-06-21 15:23:55

标签: c# .net winforms gdi+

C#当然不是我的强项,所以我感谢所有慷慨的人分享他们的知识。我正在使用Windows窗体,我已经阅读了有关事件的信息,并且已经找到了一些关于如何修改TabControl的优秀帮助,因此我可以使用OnDraw事件为标签添加一些颜色。

每个标签的颜色取决于连接变量的状态: 当前(绿色) 丢失(红色) 陈旧(黄色)

OnDraw事件非常适合更新每个选项卡的颜色,但只有在用户选择要查看的其他选项卡时才会发生这种情况。

我希望发生的是每当连接状态发生变化时每个标签的颜色都会更新。例如,假设标签#1显示为绿色,但随后连接状态变为陈旧,因此标签需要显示为黄色,但在用户单击其他标签和OnDraw事件之前,标签不会变为彩色触发了。

所以我想弄清楚如何做到这一点。当正常触发OnDraw事件时(通过用户单击其他选项卡),“DrawItemEventArgs”参数将传递到偶数处理程序。该变量已填充了确定单击哪个选项卡所需的相关数据,该选项卡的边界等。所以我不确定它来自何处或如何以编程方式重新创建此类调用以重新着色连接变量发生变化时的选项卡。

如果我需要澄清任何事情,请告诉我! 谢谢。

3 个答案:

答案 0 :(得分:1)

您可以在控件上调用Invalidate()强制重新绘制。

答案 1 :(得分:1)

如果在连接状态发生变化时触发了某个事件,则可以执行

InvalidateVisual()

在该事件中的所有标签页上。

答案 2 :(得分:0)

如果您想要不断刷新,那么您可能需要创建System.Timers.Timer对象。

创建计时器并将计时器刻度值设置为您需要的任何间隔(以毫秒为单位)后,它将定期触发OnTimerTick事件。在此活动中,您可以通过OnDraw方法触发对Invalidate()方法的调用。 Invalidate告诉系统您的屏幕需要刷新,它将在下一个可用的机会调用OnDraw和OnPaint。