IvenWong 2021-06-28 03:27 采纳率: 50%
浏览 215
已结题

关于winform 的标签页控件tabControl设置选项卡垂直左停靠后,标签页被隐藏不显示问题?

 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);
        }

展开全部

  • 写回答

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();
                }
            }

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 11月27日
  • 已采纳回答 11月20日

悬赏问题

  • ¥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 个割草电机),其次可以与树莓派主板相连电机照片如下:
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部