C# TabControl手动触发DrawItem的实现
naruto2017 人气:0当需要重绘TabControl的背景颜色时,有两种方法。
方法一
网上有很多文章介绍,将tabControl的DrawMode属性设为OwnerDrawFixed,然后在其DrawItem事件处理程序中重绘背景颜色。
private void tabControl1_DrawItem(object sender, DrawItemEventArgs e) { //标签header的背景 for (int i = 0; i < tabControl1.TabPages.Count; i++) { e.Graphics.FillRectangle(Brushes.White, (sender as TabControl).GetTabRect(i)); } //tabControl背景 e.Graphics.FillRectangle(Brushes.White, (sender as TabControl).ClientRectangle); }
方法二
当将tabControl的ItemSize设为(0,1)以便隐藏标签title的时候,方法一的事件不会被触发,会导致背景颜色无法重绘,这时候可以使用以下代码手动执行重绘。
private void ReDrawItem() { Graphics g = Graphics.FromHwnd(tabControl1.Handle); //tabPage标签header的背景 for (int i = 0; i < tabControl1.TabPages.Count; i++) { g.FillRectangle(Brushes.White, tabControl1.GetTabRect(i)); } //tabControl背景 g.FillRectangle(Brushes.White, tabControl1.ClientRectangle); }
加载全部内容