protected override void OnDrawItem(DrawItemEventArgs e)
{
TabPage tabPage = this.TabPages[e.Index];
tabPage.UseVisualStyleBackColor = true;
Graphics g = e.Graphics;
Brush backtabcontrol;//整个tab控件背景色
Brush backbrush;//标签页背景色
Brush textBrush;//标签字体颜色
Font tabFont;//标签字体
if (e.State == DrawItemState.Selected)
{
textBrush = new SolidBrush(Color.FromArgb(255, 29, 168, 255));
}
else
{
textBrush = new SolidBrush(e.ForeColor);
}
//绘制整个tab控件背景
backtabcontrol = new SolidBrush(Color.FromArgb(255, 252, 252, 252));
g.FillRectangle(backtabcontrol, this.ClientRectangle.X, this.ClientRectangle.Y, this.ClientRectangle.Size.Width, this.ClientRectangle.Height);
//绘制激活标签页标题区域的背景
//tabPage.BackColor =Color.FromArgb(255, 250, 250, 250);
Rectangle backrect = this.GetTabRect(e.Index);//标签页区域
backbrush = new SolidBrush(Color.FromArgb(255, 250, 250, 250));
g.FillRectangle(backbrush, backrect);
//绘制标签标题字体
tabFont = new Font("微软雅黑", 13, FontStyle.Bold, GraphicsUnit.Pixel);
StringFormat strFlags = new StringFormat(StringFormatFlags.DisplayFormatControl);
strFlags.Alignment = StringAlignment.Center;
strFlags.LineAlignment = StringAlignment.Center;
g.DrawString(tabPage.Text, tabFont, textBrush, backrect, strFlags);
tabPage.ToolTipText = tabPage.Text;
backtabcontrol.Dispose();
backbrush.Dispose();
tabFont.Dispose();
textBrush.Dispose();
base.OnDrawItem(e);
}
关于winform 的标签页控件tabControl设置选项卡垂直左停靠后,标签页被隐藏不显示问题?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- IvenWong 2021-06-29 00:30关注
protected override void OnDrawItem(DrawItemEventArgs e) { base.OnDrawItem(e); TabPage tabPage = this.TabPages[e.Index]; Graphics g = e.Graphics; Brush tabBackColor;//整个tab控件背景色 Brush tabTitleBackColor;//标签页标题区域背景色 Brush textColor;//标签字体颜色 //绘制整个tab控件背景,继承父控件背景色 tabBackColor = new SolidBrush(this.Parent.BackColor); g.FillRectangle(tabBackColor, this.ClientRectangle); tabBackColor.Dispose(); //文本显示方式 StringFormat textFormat = new StringFormat(StringFormatFlags.DisplayFormatControl); textFormat.Alignment = StringAlignment.Center; textFormat.LineAlignment = StringAlignment.Center; for(int i = 0; i < this.TabPages.Count; i++) { //标签页区域 Rectangle tabTitleRect = this.GetTabRect(i); if (e.State== DrawItemState.Selected&&tabPage==this.TabPages[i]) { tabTitleBackColor = new SolidBrush(Color.White); textColor = new SolidBrush(Color.FromArgb(255, 29, 168, 255)); } else { tabTitleBackColor = new SolidBrush(this.TabPages[i].BackColor); textColor = new SolidBrush(this.TabPages[i].ForeColor); } tabTitleBackColor = new SolidBrush(Color.Transparent); //绘制激活标签页标题区域的背景 g.FillRectangle(tabTitleBackColor, tabTitleRect); tabTitleBackColor.Dispose(); //绘制标签标题字体 g.DrawString(this.TabPages[i].Text, this.TabPages[i].Font, textColor, tabTitleRect, textFormat); this.TabPages[i].ToolTipText = this.TabPages[i].Text; textColor.Dispose(); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 代写uni代码,app唤醒
- ¥15 全志t113i启动qt应用程序提示internal error
- ¥15 ensp可以看看嘛.
- ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
- ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
- ¥15 minist数字识别
- ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
- ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
- ¥15 网上下载的3DMAX模型,不显示贴图怎么办
- ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下: