软件编程
位置:首页>> 软件编程>> C#编程>> C# TabControl手动触发DrawItem的实现

C# TabControl手动触发DrawItem的实现

作者:naruto2017  发布时间:2023-12-27 17:01:27 

标签:C#,TabControl,DrawItem

当需要重绘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);
}

来源:https://blog.csdn.net/szy759590387/article/details/127881309

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com