• C#重绘TabControl的Tabpage标签,添加图片及关闭按钮


    using System;   
    using System.Collections.Generic;   
    using System.ComponentModel;   
    using System.Data;   
    using System.Drawing;   
    using System.Linq;   
    using System.Text;   
    using System.Windows.Forms;   
      
    namespace TabControlTest   
    {   
        
    public partial class Form1 : Form   
        {   
            
    public Form1()   
            {   
                InitializeComponent();   
            }   
      
            
    const int CLOSE_SIZE = 15;   
            Bitmap image 
    = new Bitmap("ONE.ico");   
      
      
            
    private void MainTabControl_DrawItem(object sender, DrawItemEventArgs e)   
            {   
                
    try  
                {   
                    Rectangle myTabRect 
    = this.MainTabControl.GetTabRect(e.Index);   
      
                    
    //先添加TabPage属性      
                    e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text   
                    , 
    this.Font, SystemBrushes.ControlText, myTabRect.X + 2, myTabRect.Y + 2);   
      
                    
    //再画一个矩形框   
                    using (Pen p = new Pen(Color.White))   
                    {   
                        myTabRect.Offset(myTabRect.Width 
    - (CLOSE_SIZE + 3), 2);   
                        myTabRect.Width 
    = CLOSE_SIZE;   
                        myTabRect.Height 
    = CLOSE_SIZE;   
                        e.Graphics.DrawRectangle(p, myTabRect);   
      
                    }   
      
                    
    //填充矩形框   
                    Color recColor = e.State == DrawItemState.Selected ? Color.White : Color.White;   
                    
    using (Brush b = new SolidBrush(recColor))   
                    {   
                        e.Graphics.FillRectangle(b, myTabRect);   
                    }   
      
                    
    //画关闭符号   
                    using (Pen objpen = new Pen(Color.Black))   
                    {   
                        
    //"\"线   
                        Point p1 = new Point(myTabRect.X + 3, myTabRect.Y + 3);   
                        Point p2 
    = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + myTabRect.Height - 3);   
                        e.Graphics.DrawLine(objpen, p1, p2);   
      
                        
    //"/"线   
                        Point p3 = new Point(myTabRect.X + 3, myTabRect.Y + myTabRect.Height - 3);   
                        Point p4 
    = new Point(myTabRect.X + myTabRect.Width - 3, myTabRect.Y + 3);   
                        e.Graphics.DrawLine(objpen, p3, p4);   
                        
    ////=============================================   
                        Bitmap bt = new Bitmap(image);   
                        Point p5 
    = new Point(myTabRect.X - 504);   
                        e.Graphics.DrawImage(bt, p5);   
                        
    //e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, objpen.Brush, p5);   
                    }   
      
      
                    
    //绘制小图标                 
                    
    //==============================================================================   
                    
    //Bitmap bt = new Bitmap("E:\\1\\2.jpg");   
                    
    //Point p5 = new Point(4, 4);   
                    ////e.Graphics.DrawImage(bt, e.Bounds);   
                    //e.Graphics.DrawImage(bt, p5);   
                    
    //Pen pt = new Pen(Color.Red);   
                    ////e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, pt.Brush, e.Bounds);   
                    //e.Graphics.DrawString(this.MainTabControl.TabPages[e.Index].Text, this.Font, pt.Brush, p5);   
      
                    e.Graphics.Dispose();   
                }   
                
    catch  
                {   
        
                }   
        
            }   
      
            
    private void MainTabControl_MouseDown(object sender, MouseEventArgs e)   
            {   
                 
    if (e.Button == MouseButtons.Left)   
                 {   
                      
    int x = e.X, y = e.Y;   
      
                    
    //计算关闭区域      
                     Rectangle myTabRect = this.MainTabControl.GetTabRect(this.MainTabControl.SelectedIndex);   
        
                     myTabRect.Offset(myTabRect.Width 
    - (CLOSE_SIZE + 3), 2);   
                     myTabRect.Width 
    = CLOSE_SIZE;   
                     myTabRect.Height 
    = CLOSE_SIZE;   
        
                     
    //如果鼠标在区域内就关闭选项卡      
                     bool isClose = x > myTabRect.X && x < myTabRect.Right   
                      
    && y > myTabRect.Y && y < myTabRect.Bottom;   
        
                     
    if (isClose == true)   
                     {   
                         
    this.MainTabControl.TabPages.Remove(this.MainTabControl.SelectedTab);   
                     }   
                 }   
        
      
            }   
      
             
    //初始化页面   
             private void Form1_Load(object sender, EventArgs e)   
             {   
                 
    //清空控件   
                 
    //this.MainTabControl.TabPages.Clear();   
                 
    //绘制的方式OwnerDrawFixed表示由窗体绘制大小也一样   
                 this.MainTabControl.DrawMode = TabDrawMode.OwnerDrawFixed;   
                 
    this.MainTabControl.Padding = new System.Drawing.Point(CLOSE_SIZE, CLOSE_SIZE);   
                 
    this.MainTabControl.DrawItem += new DrawItemEventHandler(this.MainTabControl_DrawItem);   
                 
    this.MainTabControl.MouseDown += new System.Windows.Forms.MouseEventHandler(this.MainTabControl_MouseDown);   
             }   
      
             
    //添加新的tabPage并修改所有tabPage标签上面的图片   
             private void button1_Click(object sender, EventArgs e)   
             {   
                 TabPage tabtage 
    = new TabPage();   
                 MainTabControl.TabPages.Add(tabtage);   
                 MainTabControl.SelectedTab 
    = tabtage;   
                 image 
    = new Bitmap("ONE.ico");   
      
      
             }   
             
    //关闭选中的tabPage   
             private void button2_Click(object sender, EventArgs e)   
             {   
                 MainTabControl.TabPages.Remove(MainTabControl.SelectedTab);   
             }   
        }   
    }
  • 相关阅读:
    thinkphp5 tp5 命名空间 报错 Namespace declaration statement has to be the very first statement in the script
    开启 php 错误 提示 php-fpm 重启 nginx 500错误 解决办法 wdlinux lnmp 一键包 php脚本无法解析执行
    js 设置 cookie 定时 弹出层 提示层 下次访问 不再显示 弹窗 getCookie setCookie setTimeout
    php 二维数组 转字符串 implode 方便 mysql in 查询
    nginx 重启 ps -ef|grep nginx kill -HUP 主进程号
    jquery bootstrap help-block input 表单 提示 帮助 信息
    jquery 倒计时 60秒 短信 验证码 js ajax 获取
    jQuery如何获取同一个类标签的所有的值 遍历
    linux下C语言文件操作相关函数
    gcc,gdb用法
  • 原文地址:https://www.cnblogs.com/bingyun84/p/1931148.html
Copyright © 2020-2023  润新知