tabcontrol在切换页面的时候经常用到

这里讲下如何让tabcontrol更好看

ref:http://blog.csdn.net/conmajia/article/details/7596718

http://wenku.baidu.com/link?url=y4BdtX3mOer4Hdin019jJpXJLi-2_ehmEo7i08cxEp1OR_3gb5CqaHrnNEB2iLQyNDqpkNtnuREmn4GWpur081mIPuNH-1184wLkFzsVuEq

一。 创建一个类,加引用,using什么的,TabControlEx的基类为System.Windows.Forms.TabControl

二。加代码

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.Drawing;
 using System.Drawing.Drawing2D;

 namespace MyTabControl
 {
     public class TabControlEx : System.Windows.Forms.TabControl
     {
         Image backImage;
         public TabControlEx()
         {
             base.SetStyle(
                 ControlStyles.UserPaint |
                 ControlStyles.OptimizedDoubleBuffer |
                 ControlStyles.ResizeRedraw |
                 ControlStyles.SupportsTransparentBackColor,
                 true);
             base.Update();
             this.SizeMode = TabSizeMode.Fixed;
             , );
             backImage = new Bitmap(this.GetType(), "MyTabControl.bmp");
         }
         Form oldman;
         protected override void OnParentChanged(EventArgs e)
         {
             if (oldman == null) oldman = this.FindForm();
             oldman.Text = ].Text;
         }
         protected override void OnSelected(TabControlEventArgs e)
         {
             Parent.Text = e.TabPage.Text;
         }
         protected override void OnPaint(PaintEventArgs e)
         {
             e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
             ; i < this.TabCount; i++)
             {
                 //e.Graphics.DrawRectangle(Pens.Red, this.GetTabRect(i));
                 if (this.SelectedIndex == i)
                 {
                     e.Graphics.DrawImage(backImage, this.GetTabRect(i));
                 }
                 Rectangle bounds = this.GetTabRect(i);
                 PointF textPoint = new PointF();
                 SizeF textSize = TextRenderer.MeasureText(this.TabPages[i].Text, this.Font);
                 textPoint.X = bounds.X + (bounds.Width - textSize.Width) / ;
                 textPoint.Y = bounds.Bottom - textSize.Height - this.Padding.Y;
                 e.Graphics.DrawString(
                     this.TabPages[i].Text,
                     this.Font,
                     SystemBrushes.ControlLightLight,
                     textPoint.X,
                     textPoint.Y);
                 textPoint.Y--;
                 e.Graphics.DrawString(
                     this.TabPages[i].Text,
                     this.Font,
                     SystemBrushes.ControlText,
                     textPoint.X,
                     textPoint.Y);
                 if (this.ImageList != null)
                 {
                     int index = this.TabPages[i].ImageIndex;
                     string key = this.TabPages[i].ImageKey;
                     Image icon = , );
                     )
                     {
                         icon = this.ImageList.Images[index];
                     }
                     if (!string.IsNullOrEmpty(key))
                     {
                         icon = this.ImageList.Images[key];
                     }
                     e.Graphics.DrawImage(
                         icon,
                         bounds.X + (bounds.Width - icon.Width) / ,
                         bounds.Top + this.Padding.Y);
                 }
             }
         }
     }
 }

三。加imagelist,并且为tabcontrol里的tabpage设置imageindex和imageKey

四。将此类加入工具箱中,注意将该项目的属性里的调试改为外部程序调试

C#控件:TabControl的更多相关文章

  1. [C#开发小技巧]解决WinForm控件TabControl闪烁问题

    在用C#开发WinForm程序时,常发现TabControl出现严重的闪烁问题,这主要是由于TabControl控件在实现时会绘制默认的窗口背景.其实以下一段简单的代码可以有效的缓解该问题的发生.这就 ...

  2. C#控件TabControl隐藏page

    隐藏 这个需求其实就是TABCONTROL控件会有很多提前制作好的PAGE页面,每次软件启动不可能所有页面都显示出来,目前想了个比较简单的方法解决这个问题 首先定义一个List集合存储TABCONTR ...

  3. Access-自定义控件TabControl

    p{ font-size: 15px; } .alexrootdiv>div{ background: #eeeeee; border: 1px solid #aaa; width: 99%; ...

  4. C# Winform关于控件TabControl闪烁的问题

    自己重写了一个Form,然后再该form上放一个TabControl鼠标移上去会闪烁,经过网上查找解决方案,最后总算是解决了....下面附上代码: 重写一个TabControl代码如下: using ...

  5. WINFORM控件tabcontrol,隐藏,调用等等

    1先说显示项的控制, 第一个是selectedIndex属性这个实用性不是太强,但是如果不涉及到隐藏,删除,增加tabpage的话,也可以用. 第二个是selectedTab=tabPage1,这个属 ...

  6. Visual Studio中的TabControl控件的用法

    今天遇到了一个自己没遇到过的控件TabControl控件,所以找了点关于它的资料 TabControl属性 DisplayRect:只定该控件客户区的一个矩形  HotTrack:设置当鼠标经过页标签 ...

  7. .net中,控件(Name)属性或ID属性的常见命名规则

    控件名称 缩写 介绍 公共控件   Button btn 按钮 CheckBox chk 复选框 CheckedListBox ckl 显示一个项列表,其中每一项左侧都有一个复选框 ComboBox ...

  8. WPF学习(三)--Menu、TabControl和DataGrid控件介绍

    Menu Menu提供了菜单栏方式的多级菜单的管理和操作: 这里对Menu的样式不做任何的定制和管理 下面来对Menu进行测试: 将Menu添加到页面中 运行后,效果如下: 这里没有考虑界面效果和样式 ...

  9. WPF中viewmodel层怎样得到view层的TabControl控件对象?

    View层: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: ...

  10. TabControl控件的美化

    文件下载:http://files.cnblogs.com/zfanlong1314/TabControlEX.rar 本文转载:http://www.cnblogs.com/lmlblog/arch ...

随机推荐

  1. 【转】Laravel+Angularjs+D3打造可视化数据,RESTful+Ajax

    http://897371388.iteye.com/blog/1975351 大致思路也就是下面,由于最近在学Laravel也在学Angularjs,加上之前做的项目用到了d3. 原来的方案如下: ...

  2. [dpdk] 读官方文档(1)

    前提:已读了这本书<<深入浅出dpdk(朱清河等著)>>. 目标:读官方文档,同时跟着文档进行安装编译等工作. http://dpdk.org/doc/guides/index ...

  3. android导入项目出现R文件不能生成

    关于原因网上有好多,比如 1.有时候eclipse不自动编译,把project clean一下,让R.java重新生成   2.选择菜单  Project >> Clean ,前提是勾选上 ...

  4. 业界有很多MQ产品

    目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量 ...

  5. zepto源码--整体框架--学习笔记

    为了深入学习javascript,根据别人推荐的方法之一:研究源码. 相对而言,之前的项目中仅仅使用过zepto和jquery,当前阶段,看到好几千行的jquery源码,心生敬畏,望而却步,所以选择相 ...

  6. C++ 编译器内存错误 after Normal block。。。

    解决 after Normal block(#908) at 0x399EC0. CRT detected that the application wrote to memory after end ...

  7. [LeetCode]题解(python):063-Unique path II

    题目来源 https://leetcode.com/problems/unique-paths-ii/ Follow up for "Unique Paths": Now cons ...

  8. (leetcode)Summary Ranges

    Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...

  9. Linq世界走一走(LINQ TO XML)

    前言:Linq to xml是一种使用XML的新方法.从本质上来说,它采用了多种当前使用的XML处理技术,如DOM和XPath,并直接在.NET Framework内将它们组合为一个单一的编程接口.L ...

  10. asp.net中控件的Attributes用法

    在点击保存时通常会验证输入框是否为空,一般我们会在按钮控件中添加OnClientClick=“return Check();”事件,并通过javascript来处理. 下面是另一种方法,在后台.cs代 ...