C# winform TabControl怎样重绘指定的tabpage的字体颜色?

目前已完成自动重绘功能,但是字体有覆盖现象(如下图),怎样才能是图中的第一个tab字体呈现红色,其他两个tab字体保持默认状态的?代码如下:privatevoidtabM... 目前已完成自动重绘功能,但是字体有覆盖现象(如下图),怎样才能是图中的第一个tab字体呈现红色,其他两个tab字体保持默认状态的?代码如下:
private void tabMain_DrawItem(object sender, DrawItemEventArgs e) { Pen p = new Pen(Color.Black); //获取TabControl主控件的工作区域 Rectangle rec = tabMain.ClientRectangle; //新建一个StringFormat对象,用于对标签文字的布局设置 StringFormat StrFormat = new StringFormat(); StrFormat.LineAlignment = StringAlignment.Center;// 设置文字垂直方向居中 StrFormat.Alignment = StringAlignment.Center;// 设置文字水平方向居中 SolidBrush bruFont = new SolidBrush(Color.Red);// 标签字体颜色 Font font = new System.Drawing.Font("微软雅黑", 9F);//设置标签字体样式 Rectangle recChild = tabMain.GetTabRect(0); e.Graphics.DrawString(tabMain.TabPages[0].Text, font, bruFont, recChild, StrFormat); e.Graphics.DrawString(this.tabMain.TabPages[1].Text, this.Font, p.Brush, e.Bounds); e.Graphics.DrawString(this.tabMain.TabPages[2].Text, this.Font, p.Brush, e.Bounds);
}
展开
 我来答
百度网友ce7f3ccb4
2015-03-25 · TA获得超过1950个赞
知道大有可为答主
回答量:2299
采纳率:0%
帮助的人:1909万
展开全部
你这个相当于每个选项卡都绘制了3次啊,看来还没理解到重绘的原理!
每加载一个选项卡就会执行一次次方法,并不是所有选项卡加载完成就执行一次此方法,要理解哈!!
把这段代码去掉;
Rectangle recChild = tabMain.GetTabRect(0);
e.Graphics.DrawString(tabMain.TabPages[0].Text, font, bruFont, recChild, StrFormat);

e.Graphics.DrawString(this.tabMain.TabPages[1].Text, this.Font, p.Brush, e.Bounds);
e.Graphics.DrawString(this.tabMain.TabPages[2].Text, this.Font, p.Brush, e.Bounds);
然后修改成这句
e.Graphics.DrawString(this.tabMain.TabPages[e.index].Text, font, bruFont, e.Bounds);
要不同的颜色的话,你就根据e.index结合选择的项的Index来创建不同的画刷SolidBrush对象和font字体对象,如果用默认字体的话,就用this.font就可以了,
追问
感谢大神
追答
呵呵,望采纳哈!!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式