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

关于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 08: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月28日
  • 已采纳回答 11月20日

悬赏问题

  • ¥15 vhdl+MODELSIM
  • ¥20 simulink中怎么使用solve函数?
  • ¥30 dspbuilder中使用signalcompiler时报错Error during compilation: Fitter failed,求解决办法
  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题