【组件修改】winform某个tabcontrol控件的修改--加上关闭按钮

【前言】

最近开始搞winform,要有一个美观大方的tabcontrol,并且可以关闭,偶然在网上的程序员之窗下载到一个,但是没有关闭按钮,所以我只能自己动手改装了。

我改装了两处地方,第一处,将close的图标绘制绘制出来--当鼠标在图标范围内则绘制选中样式的close按钮;

第二处:添加关闭事件,具体而言,当tabcontrol接收到点击事件时候,判断鼠标是不是在close范围,假如是,就调用remove方法去掉当前tab页面。


大概的代码如下:

                /*
                 绘制关闭图标
                 */
                Bitmap oImage = CSharpWin.Properties.Resources.window_close;
                Bitmap OImageSelected = CSharpWin.Properties.Resources.cross;
                // g.DrawImage(oImage,new PointF(textRect.X+20,textRect.Height-20));
                Rectangle closeRect = new Rectangle(tabRect.X + tabRect.Width - 12 - 9, tabRect.Y + tabRect.Height - 12 - 6, 16, 16);
                if(closeRect.Contains(cusorPoint)){
                g.DrawImage(OImageSelected, closeRect, 0, 0, 16, 16, GraphicsUnit.Pixel);
                }
                else{
                    g.DrawImage(oImage, closeRect, 0, 0, 16, 16, GraphicsUnit.Pixel);
                }
                /*绘制结束*/

        /// <summary>
        /// 这里是鼠标对tab的点击事件,当发生的时候,获取当前鼠标位置,假如在closebtn上面,那么就直接关闭。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="agrs"></param>
        private void init_click_handler(Object sender,MouseEventArgs agrs){
           
            TabControl t1 = (TabControl)sender;
            int cSelectedIndex = t1.SelectedIndex;
           // MessageBox.Show("您点击了我,鼠标位置:" + agrs.X + "  " + agrs.Y + " 当前选中的tab为:" +cSelectedIndex);
            Rectangle rect1=  t1.GetTabRect(t1.SelectedIndex);
          //  MessageBox.Show("当前选中的矩形信息为:left "+rect1.Left+",top "+rect1.Top+",width "+rect1.Width+",height "+rect1.Height+"");

            Rectangle closeRect = new Rectangle(rect1.X + rect1.Width - 12 - 9, rect1.Y + rect1.Height - 12 - 6, 16, 16);
            if (closeRect.Contains(new Point(agrs.X, agrs.Y))) {
              // MessageBox.Show("在close按钮范围里面");
                //--假如在close按钮里面,就关闭
               // this.TabPages.RemoveAt(cSelectedIndex );
                this.TabPages.Remove(this.TabPages[cSelectedIndex]);
            }

            
            

        }

放心,我下面将项目源代码放出来,大家可以去下载。运行环境:vs2010,net4.0.

修改版tabcontrol

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值